לפעמים כדאי לתכנן את המסלול שהאפליקציה מספקת למשתמשים. באמצעות אסימון הנתיב מה-API של Routes (או Rutes Preferred API) יכול לעזור לך לציין יש שני דברים שחשוב לדעת על המסלול המתוכנן:
קו פוליגוני של הנתיב
יעדי המסלול
לדוגמה, לפניכם כמה דוגמאות ליעדי ניתוב אפשריים:
לקצר את זמן המשלוח עד לקבלת המשלוח: עסק שמספק אוכל ירצה לצמצם את זמן המשלוח הזמן שנדרש כדי לספק את האוכל.
צמצום זמן הנסיעה או צריכת הדלק: עסק לוגיסטיקה מומלץ לשפר את היעילות של הנהגים ולצמצם את עלויות הדלק.
מזעור הזמן עד ליעד: ייתכן שפעולה של שיגור שירות לצמצם את הזמן שנדרש כדי לשלוח אופרטורים לבקשת משימה.
הפחתת עלויות ושיפור הבטיחות: עסק שמספק נסיעות בתחבורה ציבורית עשוי לרצות למצוא מסלול עולה פחות לנוסעים ושנמנע מאזורים מסוימים לבטיחות סיבות נוספות.
למידע נוסף על תכנון מסלול באמצעות אסימון נתיב, אפשר לעיין במאמר מבקשים אסימון מסלול.
למה להשתמש באסימון נתיב למטרות מסלול
עם אסימון נתיב מה-API המועדף, 'מסלולים' או 'מסלולים', מקבלים יותר שליטה במסלול הנתון:
תכנון מסלול מראש לשימוש ב-SDK לניווט כשהדבר אפשרי.
בחירת המסלול הטוב ביותר לשימוש ב-SDK לניווט. אם מבקשים אסימוני ניתוב בזמן יצירת מסלולים ב-Routes API, תקבלו אסימון מסלול לכל מסלול שנוצר. אחרי זה תוכלו לבחור את האסימון למסלול שבו רוצים להשתמש כשמעבירים אותו SDK ניווט.
להעריך את המחיר מראש, כולל הערכות של זמן ההגעה המשוער והמרחק. העלות והזמן בפועל עשויים להשתנות, אבל ההערכה הזו מפחיתה את הפער בין העלות הצפויה של המסלול והעלות בפועל של המסלול.
אפשר לציין יעדי מסלול מתקדמים יותר, כמו ניתוב אקולוגי או הקצר ביותר מסלול.
איך פועלים אסימוני הניתוב של Routes API
אפשר להשתמש ב-Routes API או ב-Routes Preferred API כדי לתכנן מסלול באמצעות מטרות שקשורות למסלול. ה-Routes API מחזיר אסימון הנתיב שאפשר להעביר ל-SDK לניווט כדי להנחות את אופן השימוש בו מנתב את הרכב שלך.
זה מה שקורה כשמבקשים אסימון מסלול ומשתמשים בו Routes API:
ה-Routes API מחזיר אסימון נתיב מוצפן שכולל את הנתיב יעדים של קו פוליגוני ונתיב.
אתם מעבירים את אסימון הנתיב ל-SDK לניווט.
ערכת הניווט SDK מאחזרת את המסלול, או אם המסלול לא עקב שינויים בתנאים, היא מאחזרת את ההתאמה הטובה ביותר מסלול.
בזמן הנהיגה במסלול, אם חל שינוי במצב התנועה או בתנאי הכביש אחרים, או אם כשרכב סוטה מהמסלול המתוכנן, המסלולים שהשתנו כל הזמן מנסים להתאים את המסלול הטוב ביותר על סמך יעדי הנתיב באסימון.
התהליך הזה ממקסם את המרחק בין המסלול בפועל לבין המסלול המתוכנן.
למה יכול להיות שלא מתבצע בדיוק מעקב אחרי מסלול מתוכנן
היעדים של המסלולים והמסלולים המתוכננים הם כהנחיות: אינם מרשם. ייתכן שיהיו הבדלים בין המסלול המתוכנן לבין המסלול שסופק על ידי ניווט מודרך עקב הבדלים בדרך תנאים, מיקום התחלתי או פרמטרים אחרים שהשתנו מאז יצר את המסלול המתוכנן. ההבדל הזה עלול לגרום לחוסר התאמה בין היעדים המתוכנן והיעדים בפועל מבחינת המרחק וזמן ההגעה המשוער, כמו גם נסיעה חשובה איכויות.
תכנון מסלול באמצעות אסימון נתיב
אפשר לתכנן מסלול על ידי יצירת אסימון מסלול והעברתו אל SDK לניווט, כפי שמתואר בשלבים הבאים:
שלב 1: יצירת אסימון נתיב באמצעות ה-API המועדף למסלולים או למסלולים
מבקשים אסימון מסלול באחת מהשיטות הבאות:
Routes API:
computeRoutes
. מידע נוסף על בבקשת אסימון נתיב ב-Routee API: לחשב מסלול וגם מבקשים אסימון מסלול.Routes Preferred API:
computeCustomRoutes
. מידע נוסף על בבקשה לקבלת אסימון נתיב ב-Roututes Preferred API תכנון מסלול.
מגדירים בקשה למסלול כדי לעמוד בדרישות לשימוש במסלול אסימון:
- הגדרה של
travel_mode
לערךDRIVING
- מגדירים את
routing_preference
לערךTRAFFIC_AWARE
או לערךTRAFFIC_AWARE_OPTIMAL
- אין להשתמש דרך ציוני דרך
- הגדרה של
שלב 2: מעבירים את אסימון המסלול ל-Navigation SDK
אחסון אסימון המסלול: מגדירים מחרוזת ב-Navigation SDK כדי לאחסן את אסימון הנתיב. לדוגמה:
String routeToken = "route token returned by Routes API";
דוגמה לאסימון מסלול שהוחזר:
{ // Other fields "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g", }
מעבירים את אסימון הנתיב ל-SDK לניווט באמצעות שיטה
Navigator.setDestinations
, ציון אותו יעד נקודות הדרך שבהן השתמשתם כשיצרתם את אסימון המסלול:setDestinations(List
destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions); לדוגמה:
CustomRoutesOptions customRoutesOptions = CustomRoutesOptions.builder() .setRouteToken(routeToken) .build();
ה-method Navigator.setDestinations
מחזירה את סטטוס הבקשה.
אם הוא מוצא מסלול ממיקום הרכב אל היעד הנתון,
הפונקציה מחזירה RouteStatus.OK
.
למידע נוסף על שיטה זו, ראה
Navigator.setDestinations
דוגמה
דוגמת הקוד הבאה ממחישה איך לציין מסלול מתוכנן באמצעות אסימון הניתוב.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by Routes API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);
האינטראקציה בין אסימוני ניתוב לבין Navigation SDK
הנה תיאור של המסלול שנוצר על ידי SDK הניווט והתכנון המתוכנן באינטראקציה של אסימון הנתיב:
ביטול של כל היעדים שהוגדרו בעבר.
משתמש בנקודת ההתחלה של הרכב.
התאמות לפי מצב הכביש ומצב התנועה. צפייה למה יכול להיות שלא מתבצע בדיוק מעקב אחרי מסלול מתוכנן
מתעלם מהאפשרויות הבאות הקשורות לניתוב, כאפשרויות שאינן נחוצות:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
מעקבים:
אפשרויות שקשורות לנקודות דרך, כמו ההעדפה לצד הדרך.
יעדי ניווט. אם ה-SDK לניווט צריך תשנה את המסלול המוחזר, היא תשתמש במטרות המסלול שציינתם מבקשים את אסימון הנתיב. לכן, צריך להשתמש אפשרויות שקשורות לנקודת ציון שציינתם ב-Routee API.