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

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

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

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

כברירת מחדל, Navigation SDK for 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){...}];