在确定拼车行程的最佳路线时,最快路线并不一定是最佳选择。您可能需要自定义路线。借助 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);