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

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

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

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

כברירת מחדל, 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;

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