שינוי העדפות הניתוב

חישובי מסלול (כולל ניתוב מחדש) מחזירים את המסלול שלוקח את משך הזמן הקצר ביותר לניווט, כברירת המחדל של המסלול הטוב ביותר. אבל אפשר לשנות את אסטרטגיית הניתוב כך שיוצגו במקום זאת האפשרויות הקצרות יותר מבין החלופות.

פירוש המונח shorter הוא המסלול הקצר ביותר מבין המסלול האופטימלי, על סמך מודל העלות שמוגדר כברירת מחדל. יכול להיות שהמסלול הקצר יותר לא יהיה המסלול המוחלט ביותר, כי האפשרות הזו עלולה להיות חלופה גרועה. לדוגמה, אם המסלול הקצר ביותר הוא 10 ק"מ והניווט נמשך 50 דקות, ומסלול אחר הוא 15 ק"מ אבל הניווט נמשך רק 20 דקות, האפשרות השנייה היא אופטימלית, כי חיסכון של 30 דקות בפחות חמישה ק"מ הוא לא פתרון טוב.

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

קבלת פרטי המסלול

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

הפרטים האלה מגיעים מ-GMSNavigationRouteInfo בהתקשרות החוזרת.

דוגמה

דוגמת הקוד הבאה ממחישה איך לקבל פרטי מסלול עבור כל אחת משתי אסטרטגיות הניתוב.

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 מדרג מסלולים לפי מודל העלות המוגדר כברירת מחדל של ה-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){...}];

מסלולים שכוללים מעבורות

כברירת מחדל, ה-SDK של הניווט ל-iOS לא כולל מסלולים שכוללים מעבורות. אם אתם מעדיפים לכלול אפשרויות של מעבורת במסלולים, תוכלו לשנות את העדפת הניתוב כדי לחשוף את הנסיעה לקטעי המעבורת על ידי הגדרת avoidsFerries לאפשרות false.

דוגמה

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

הפורמט של היתרונות המרכזיים של המסלול

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

הגדרת הפורמט של ההסבר למסלול

אפשר לשנות את הפורמט של נכסי היתרונות המרכזיים של המסלול, על ידי הגדרת routeCalloutFormat ב-GMSMapView. routeCalloutFormat לוקחת את אחד מערכי המספור הבאים:

ערך המספורתיאור
GMSNavigationRouteCalloutFormatDefault הצגת הזמן שנשאר כשמשתמשים באסטרטגיית ברירת המחדל לניתוב המסלול הטובה ביותר. הצגת המרחק שנותר כשמשתמשים באסטרטגיית המסלול הקצרה יותר
GMSNavigationRouteCalloutFormatTime הצגת הזמן שנותר.
GMSNavigationRouteCalloutFormatDistance Dהצגת המרחק שנותר.

דוגמה

דוגמת הקוד הבאה ממחישה איך להגדיר את הפורמט של הסבר על מסלול.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;