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

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

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

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

כברירת מחדל, Navigation SDK ל-iOS מוצא את המסלול המהיר ביותר לנקודת הדרך, אבל זה לא מבטיח שהמשתמש יגיע לצד הרצוי של הכביש, למשל, הצד של הכביש שבו הלקוח של נהג הנסיעה השיתופית ממתין. התכונה Side of the Road Routing Preference מאפשרת לוודא שהרכב מגיע לצד הנכון של הכביש.

איך זה עובד

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

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

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