在決定共乘行程的最佳路線時,最快路線未必是最佳選項。您可能需要自訂路線。Routes Preferred API 可讓您使用 ComputeCustomRoutes
方法指定路徑目標來自訂路徑。
建立自訂路徑時,Routes Preferred API 會產生路徑權杖。接著,您可以將權杖傳送至 Android 版的 Navigation SDK 並擷取自訂路徑。
如要進一步瞭解如何建立自訂路徑,請參閱「建立自訂路徑」一文。
擷取自訂路徑
您可以使用 Navigator.setDestinations
方法,將路徑權杖傳遞至 Android 版 Navigation SDK,以擷取自訂路徑。
setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);
自訂路徑會覆寫任何先前設定的目的地。這項功能會使用相應的駕駛起點位置、道路和路況資訊。
Navigator.setDestinations
採用下列參數:
參數 | 說明 |
---|---|
目的地 | 要設定的新目的地清單。 |
customRoutesOptions | 用於擷取預先運算路徑的選項,以 Routes Preferred API 傳回的權杖為依據。 |
displayOptions | 用於顯示路線的選項。 |
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);