ルート計算(ルート変更を含む)では、所要時間が最も短いルートがデフォルトの最適ルートとして返されます。ただし、ルーティング戦略を変更して、代わりにより短いルート候補が返されるようにすることもできます。
「短い」とは、デフォルトの費用モデルに基づく最適なルートの中で最も短いルートを指します。短いルートが最短ルートとは限りません。そのルートが最適な選択肢ではない場合があります。たとえば、最短のルートでは 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 はフェリーを含むルートを除外します。ルートの一部としてフェリー オプションを含める場合は、avoidFerries
を false
に設定して、このルーティング設定を調整し、フェリー セグメントにルートを表示できます。
例
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);