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

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

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

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

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

דוגמה

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

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

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

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

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

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

דוגמה

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

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;