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