ルート計算(ルート変更を含む)では、ナビゲーションに要する時間が最も短いルートがデフォルトの最適ルートとして返されます。ただし、ルーティング戦略を変更して、代わりに短い方のルートを返すようにすることもできます。
「短い」とは、デフォルトの費用モデルに基づいて、最適なルートの中で最も短いルートを意味します。短いルートは、絶対的に最短のルートではない可能性があります。そのオプションは、代替ルートとして不適切な可能性があるためです。たとえば、絶対的な最短ルートが 10 km で、ナビゲーションに 50 分かかる場合、別のルートが 15 km で、ナビゲーションに 20 分しかかからない場合、2 番目の選択肢が最適です。5 km を短縮するために 30 分を費やすのは、適切なトレードオフではありません。
ルートの経路設定方法を設定すると、ルートが完了するまで変更されません。既存のルートのルーティング戦略を変更するには、目的地をクリアして、新しいルーティング戦略で再設定する必要があります。
ルーティング戦略の設定
ルーティング戦略を構成するには、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);
ルートのコールアウトの形式
短いルート設定では、ルート沿いのコールアウトに距離の詳細が表示されます。代わりに ETA コールアウトを使用できます。
ルート コールアウトの形式を構成する
ルート コールアウトの形式を変更するには、NavigationView(または NavigationFragment)で setRouteCalloutInfoFormat を呼び出します。setRouteCalloutInfoFormat は、次のいずれかの列挙値を取ります。
| 列挙値 | 説明 |
|---|---|
| RouteCalloutInfoFormat.DEFAULT | デフォルトの最適ルートのルーティング戦略を使用している場合に、残り時間を表示します。短いルートのルーティング戦略を使用している場合に、残りの距離を表示します。 |
| RouteCalloutInfoFormat.TIME | 残り時間を表示します。 |
| RouteCalloutInfoFormat.DISTANCE | 残りの距離を表示します。 |
例
次のコード例は、ルート コールアウト形式を構成する方法を示しています。
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);