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

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

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

כברירת מחדל, 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, כפי שמתואר בדוגמה הבאה:

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: {...})

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){...}];