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

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

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

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

כברירת מחדל, 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 degrees) לצד הכביש שבו נמצאת נקודת הביניים.

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

במקומות מסוימים, המשתמשים לא יכולים לעצור בבטחה (לדוגמה, באזורים מוגבהים, במעבורות, במיקומים תת-קרקעיים ובאזורים אחרים עם גישה מוגבלת). התכונה עצירה מעבירה את נקודת הציון למקום סמוך אם המיקום שלה לא מתאים לעצירה של המשתמש. כשמגדירים את 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){...}];