路徑權杖

在決定共乘行程的最佳路線時,最快路線未必是最佳選項。您可能需要自訂路線。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);