ライドシェアリング ルートの最適ルートを決定する際、最速ルートが常に最適であるとは限りません。ルートをカスタマイズすることもできます。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);