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