חישובי מסלולים (כולל ניתוב מחדש) מחזירים את המסלול שייקח את הכי פחות זמן לניווט בתור המסלול הטוב ביותר כברירת מחדל. אבל אתם יכולים לשנות את אסטרטגיית הניתוב כך שיוחזר המסלול הקצר יותר מבין האפשרויות.
המונח קצר יותר מתייחס למסלול הקצר ביותר מבין המסלולים האופטימליים, על סמך מודל העלות שמוגדר כברירת מחדל. יכול להיות שהמסלול הקצר יותר לא יהיה המסלול הקצר ביותר באופן מוחלט, כי יכול להיות שהאפשרות הזו לא תהיה חלופה טובה. לדוגמה, אם המסלול הקצר ביותר הוא באורך 10 ק"מ וזמן הנסיעה בו הוא 50 דקות, ומסלול אחר הוא באורך 15 ק"מ אבל זמן הנסיעה בו הוא רק 20 דקות, האפשרות השנייה היא האופטימלית, כי לא כדאי להוסיף 30 דקות לנסיעה כדי לקצר אותה ב-5 ק"מ.
אחרי שמגדירים את אסטרטגיית המסלול לנסיעה, היא לא תשתנה עד שהנסיעה תסתיים. כדי לשנות את אסטרטגיית הניתוב של נסיעה קיימת, צריך למחוק את יעדי הנסיעה ולהגדיר אותם מחדש עם אסטרטגיית הניתוב החדשה.
מתבצעת קבלת פרטי המסלול
כדי לקבוע איזו אסטרטגיית מסלול היא הבחירה האופטימלית לנקודת ציון מסוימת, צריך להתקשר אל getRouteInfoForDestination() כדי לקבל פרטים על המסלול הטוב ביותר שמוגדר כברירת מחדל ועל המסלול הקצר ביותר. הפרטים כוללים את משך הזמן ואת המרחק עד לציון דרך של יעד.
הפרטים האלה מגיעים מ-
GMSNavigationRouteInfo
ב-callback.
דוגמה
בדוגמת הקוד הבאה אפשר לראות איך מקבלים את פרטי המסלול לכל אחת משתי אסטרטגיות הניתוב.
Swift
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
הגדרת אסטרטגיית הניתוב
כדי להגדיר את אסטרטגיית הניתוב, משתמשים ב-GMSNavigationRoutingOptions ומגדירים את routingStrategy כשמתקשרים אל setDestinations().
המאפיין routingStrategy מקבל אחד מהערכים הבאים:
| ערך מספור | תיאור |
|---|---|
| GMSNavigationRoutingStrategyDefaultBest | מדרג את המסלולים לפי מודל העלות שמוגדר כברירת מחדל ב-Navigation SDK. זוהי שיטת הניתוב שמוגדרת כברירת מחדל. |
| GMSNavigationRoutingStrategyShorter | מדרג את המסלולים לפי מרחק. המסלול עם הדירוג הכי גבוה הוא הקצר ביותר מבין המסלולים שמוחזרים. |
דוגמה
בדוגמת הקוד הבאה אפשר לראות איך מגדירים את אסטרטגיית הניתוב של המסלול הקצר יותר.
Swift
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];
מסלולים שכוללים מעבורות
כברירת מחדל, Navigation SDK ל-iOS לא כולל מסלולים עם מעבורות. אם אתם רוצים לכלול אפשרויות של מעבורות כחלק מהמסלולים, אתם יכולים לשנות את העדפת הניתוב הזו כדי להציג את הנסיעה למקטעי מעבורת על ידי הגדרת avoidsFerries ל-false.
דוגמה
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
הפורמט של נכס יתרונות מרכזיים לנסיעות
במסלול הקצר יותר, ההערות לאורך המסלול מציגות פרטים על המרחק. אבל אפשר להשתמש בתיאורי היתרונות של זמן ההגעה המשוער במקום זאת.
הגדרת הפורמט של ההפניה לדרך
אפשר לשנות את הפורמט של תיאור המסלול על ידי הגדרת routeCalloutFormat ב-GMSMapView. routeCalloutFormat מקבל אחד מהערכים הבאים:
| ערך מספור | תיאור |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | הזמן שנותר מוצג כשמשתמשים באסטרטגיית ברירת המחדל של המסלול הכי טוב. הצגת המרחק שנותר כשמשתמשים באסטרטגיית ניתוב של מסלול קצר יותר |
| GMSNavigationRouteCalloutFormatTime | הזמן שנותר. |
| GMSNavigationRouteCalloutFormatDistance | Dמציג את המרחק שנותר. |
דוגמה
בדוגמה הבאה של קוד אפשר לראות איך מגדירים את הפורמט של קריאה ל-callout של מסלול.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;