כשאתם מחליטים מה המסלול הטוב ביותר לנסיעה משותפת, יכול להיות שהמסלול המהיר ביותר הוא לא תמיד האפשרות הטובה ביותר. יכול להיות שתרצו להתאים אישית את המסלול שלכם. באמצעות Routes Preferred API אפשר להתאים אישית מסלול על ידי ציון יעד של מסלול באמצעות השיטה ComputeCustomRoutes
.
כשיוצרים נתיב מותאם אישית, ה-Routs Preferred API יוצר אסימון נתיב. לאחר מכן תוכל להעביר את האסימון ל-SDK לניווט עבור Android ולאחזר את הנתיב המותאם אישית.
למידע נוסף על יצירת מסלול מותאם אישית, ראו יצירת מסלולים מותאמים אישית.
אחזור של מסלול מותאם אישית
תוכלו לאחזר מסלול מותאם אישית על ידי העברת אסימון נתיב ל-Navigation SDK for Android באמצעות השיטה Navigator.setDestinations
.
setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);
המסלול המותאם אישית מבטל את כל היעדים שהוגדרו בעבר. היא מתבססת על מיקום ההתחלה של הנהג, על מצב הכביש ומצב התנועה.
הפונקציה Navigator.setDestinations
לוקחת את הפרמטרים הבאים:
פרמטר | תיאור |
---|---|
יעדים גיאוגרפיים | רשימת היעדים החדשה שיש להגדיר. |
customRoutesOptions | האפשרויות שישמשו לאחזור מסלול שמחושב מראש, על סמך אסימון שהוחזר על ידי Routes Preferred API. |
displayOptions | האפשרויות שישמשו להצגת המסלול. |
ה-method Navigator.setDestinations
מחזירה את סטטוס הבקשה.
אם נמצא מסלול מהמיקום של המשתמש אל היעד הנתון, הוא יחזיר RouteStatus.OK
.
דוגמה
הקוד לדוגמה הבא מדגים איך מאחזרים מסלול מותאם אישית.
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 RoutesPreferred 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);