路由令牌

在确定拼车行程的最佳路线时,最快路线并不一定是最佳选择。您可能需要自定义路线。借助 Routes Preferred API,您可以使用 ComputeCustomRoutes 方法指定路线目标,从而自定义路线。

创建自定义路由时,Routes Preferred API 会生成路由令牌。然后,您可以将该令牌传递给 Navigation SDK for Android 并检索自定义路线。

如需详细了解如何创建自定义路由,请参阅创建自定义路由

检索自定义路由

您可以使用 Navigator.setDestinations 方法将路线令牌传递给 Navigation SDK for Android,以检索自定义路线。

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);