ניהול ציוני דרך

במסמך הזה מוסבר איך לנהל את ההעדפות של נקודות ציון באפליקציה באמצעות שתי תכונות:

  • העדפות לגבי צד הכביש במסלול
  • עצירה ביניים

הגדרת העדפה לצד הכביש לצורך ניתוב

כברירת מחדל, Navigation SDK ל-iOS מוצא את המסלול המהיר ביותר לנקודת ציון, אבל אין ערובה שהמשתמש יגיע לצד הרצוי של הכביש, למשל הצד שבו הלקוח של נהג שיתוף הנסיעה מחכה. התכונה העדפת מסלול לפי צד הדרך מאפשרת לכם לוודא שהרכב יגיע לצד הנכון של הכביש.

איך זה עובד

מגדירים את ההעדפה להגיע לצד מסוים של הכביש כשיוצרים את נקודת הציון של אותה עצירה. אפשר לציין את ההעדפה באחת משתי דרכים.

עדיפות לאותו צד של הכביש

עליכם לספק את הקואורדינטות הגיאוגרפיות של נקודת הציון, ולאחר מכן להגדיר דגל preferSameSideOfRoad שמציין שאתם מעדיפים להגיע לאותה צד של הכביש שבו נמצאת נקודת הציון, צמודה למדרכה הקרובה ביותר.

(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
                                  title:(NSString *)title
                   preferSameSideOfRoad:(BOOL)preferSameSideOfRoad;

כותרת הפלח המועדפת

אתם מספקים את הקואורדינטות הגיאוגרפיות של נקודת הציון, ואז את כיוון ההגעה preferredSegmentHeading שמתאים לכיוון התנועה באותה צד של הכביש כמו היעד.

(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
                                  title:(NSString *)title
                preferredSegmentHeading:(int32_t)preferredSegmentHeading;

‏Navigation SDK בוחר את מקטע הכביש הקרוב ביותר לנקודת הציון, עם כיוון נתיב שמתאים (בטווח של +/- 55 מעלות) לצד הכביש שבו נמצאת נקודת הציון.

הגדרת העדפה לגבי עצירות ביניים

במקומות מסוימים, המשתמשים לא יכולים לעצור בבטחה (לדוגמה, באזורים מוגבהים, במעבורות, במיקומים תת-קרקעיים ובאזורים אחרים עם גישה מוגבלת). התכונה עצירה מעבירה את נקודת הציון למקום סמוך אם המיקום שלה לא מתאים למשתמש לעצור בו. כשמגדירים את vehicleStopover כ-YES, נקודת הציון מועברת באופן אוטומטי כשהמסלול מחושב, אם יש מיקום חלופי זמין.

איך זה עובד

מגדירים את ההעדפה של עצירה ביניים כשיוצרים את נקודת הציון של אותה עצירה. כדי לעשות זאת, מגדירים את ההעדפה לתחנה ביניים ב-GMSNavigationMutableWaypoint, כפי שמתואר בדוגמה הבאה:

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint = GMSNavigationMutableWaypoint(location: location, title: "waypoint from location")!
waypoint.vehicleStopover = true
mapView.navigator?.setDestinations([waypoint], routingOptions: routingOptions, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationMutableWaypoint *waypoint =
    [[GMSNavigationMutableWaypoint alloc] initWithLocation:location
                                                     title:@"waypoint from location"];
waypoint.vehicleStopover = YES;
[_mapView.navigator setDestinations:@[waypoint1]
                     routingOptions:routingOptions
                           callback:^(GMSRouteStatus routeStatus){...}];