ルーティング設定の調整

ルート計算(ルート変更を含む)では、移動時間が最も短いルートがデフォルトの最適ルートとして返されます。ただし、短い方の代替ルートが返されるように、ルーティング戦略を変更することもできます。

「より短い」という用語は、デフォルトのコストモデルに基づく最適ルートの中で最短のルートを意味します。より短いルートは、絶対的な最短ルートではない場合があります。これは、この方法は不適切な代替手段となる可能性があるためです。たとえば、絶対的に短いルートが 10 km で移動に 50 分かかり、別のルートが 15 km で移動に 20 分かかる場合、5 km の短縮に 30 分費やすのは良いトレードオフではないため、2 番目の選択が最適です。

設定したルートは、ルートが終了するまで変更されません。既存のルートのルーティング戦略を変更するには、その目的地を消去し、新しいルート選択戦略で再度リセットする必要があります。

ルートの詳細を取得しています

特定の地点に最適なルート戦略を決定するには、getRouteInfo() を呼び出して、デフォルトの最適ルートと絶対的に短いルートの両方のルートの詳細を取得します。詳細には、目的地の地点までの所要時間と距離が含まれます。

これらの詳細は RouteInfo から取得され、ListenableResultFuture で返されます。

次のコード例は、2 つのルーティング戦略それぞれでルートの詳細を取得する方法を示しています。

ListenableResultFuture<RouteInfo> routeInfoFuture =
        navigator.getRouteInfo(waypoint, routingOptions);

ルーティング戦略の設定

ルーティング戦略を構成するには、setDestinations() を呼び出すときに RoutingOptions.routingStrategy を設定します。

RoutingOptions.routingStrategy は、次のいずれかの列挙値を取ります。

列挙値説明
RoutingStrategy.DEFAULT_BEST Navigation SDK のデフォルトのコストモデルによってルートをランク付けします。これはデフォルトのルーティング戦略です。
RoutingStrategy.SHORTER 距離によってルートをランク付けします。最もランキングの高いルートは、返されたルートの中で最も短いルートです。

次のコード例は、短いルートの設定を指定する方法を示しています。

RoutingOptions routingOptions = new RoutingOptions();
routingOptions.routingStrategy(RoutingStrategy.SHORTER);
navigator.setDestinations(destinations, routingOptions, displayOptions);

フェリーを含むルート

デフォルトでは、NavSDK はフェリーを含むルートを除外します。ルートにフェリー オプションを含める場合は、avoidFerriesfalse に設定することで、このルーティング設定を調整して、ルートをフェリー セグメントに公開できます。

RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);

ルート コールアウトの形式

短いルート設定では、ルート上のコールアウトに距離の詳細が表示されます。代わりに到着予定時刻のコールアウトを使用することもできます。

ルート コールアウト形式の構成

ルート コールアウトの形式を変更するには、NavigationView(または NavigationFragment)で setRouteCalloutInfoFormat を呼び出します。setRouteCalloutInfoFormat は、次のいずれかの列挙値を取ります。

列挙値説明
RouteCalloutInfoFormat.DEFAULT デフォルトの最適ルート ルーティング戦略を使用する場合の残り時間が表示されます。短いルートのルーティング戦略を使用した場合に、残りの距離が表示されます。
RouteCalloutInfoFormat.TIME 残り時間を表示します。
RouteCalloutInfoFormat.DISTANCE 残りの距離を表示します。

次のコード例は、ルート コールアウトの形式を構成する方法を示しています。

mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);