Les calculs d'itinéraire (y compris le réacheminement) renvoient l'itinéraire le plus long, en tant que meilleur itinéraire par défaut. Toutefois, vous pouvez modifier la stratégie de routage de manière à renvoyer la plus courte des alternatives de routes.
Le terme plus court désigne l'itinéraire le plus court parmi les meilleurs itinéraires en fonction de notre modèle de coût par défaut. L'itinéraire le plus court n'est peut-être pas le plus court absolu, car il n'est pas adapté. Par exemple, si l'itinéraire le plus court est de 10 km et que la navigation dure 50 minutes et qu'un autre est de 15 km, mais que la navigation ne prend que 20 minutes, la deuxième option est optimale. En effet, consacrer 30 minutes à réduire la distance de cinq km n'est pas un bon compromis.
Une fois que vous avez défini la stratégie d'itinéraire d'un trajet, elle ne change pas tant que le trajet n'est pas terminé. Pour modifier la stratégie d'itinéraire d'un trajet existant, vous devez effacer les destinations, puis les réinitialiser à nouveau avec la nouvelle stratégie d'itinéraire.
Obtenir des informations sur l'itinéraire
Pour déterminer la stratégie d'itinéraire à privilégier pour un point de cheminement donné, appelez getRouteInfo()
afin d'obtenir des détails sur le meilleur itinéraire par défaut et l'itinéraire le plus court. Les détails incluent la durée et la distance jusqu'à un point de cheminement de destination.
Ces informations proviennent de RouteInfo
et sont renvoyées dans un ListenableResultFuture
.
Exemple
L'exemple de code suivant montre comment obtenir des détails sur la route pour chacune des deux stratégies de routage.
ListenableResultFuture<RouteInfo> routeInfoFuture =
navigator.getRouteInfo(waypoint, routingOptions);
Définir la stratégie de routage
Vous pouvez configurer la stratégie de routage en définissant RoutingOptions.routingStrategy
lorsque vous appelez setDestinations()
.
RoutingOptions.routingStrategy
accepte l'une des valeurs d'énumération suivantes:
Valeur d'énumération | Description |
---|---|
RoutingStrategy.DEFAULT_BEST | Classe les itinéraires en fonction du modèle de coût par défaut du SDK Navigation. Il s'agit de la stratégie de routage par défaut. |
RoutingStrategy.SHORTER | Classe les itinéraires en fonction de la distance. La route la mieux classée est la plus courte parmi celles renvoyées. |
Exemple
L'exemple de code suivant montre comment définir la préférence d'itinéraire le plus court.
RoutingOptions routingOptions = new RoutingOptions();
routingOptions.routingStrategy(RoutingStrategy.SHORTER);
navigator.setDestinations(destinations, routingOptions, displayOptions);
Itinéraires avec ferries
Par défaut, le NavSDK exclut les itinéraires qui incluent des ferries. Si vous préférez inclure des options de ferry dans vos itinéraires, vous pouvez ajuster cette préférence d'itinéraire afin que le trajet soit proposé aux segments de ferry en définissant avoidFerries
sur false
.
Exemple
RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);
Le format des accroches de l'itinéraire
Sous la préférence d'itinéraire le plus court, les accroches le long de l'itinéraire affichent les détails de la distance. Toutefois, vous pouvez utiliser les appels d'annonce textuelle agrandie à la place.
Configurer le format d'accroche de route
Vous pouvez modifier le format des accroches de l'itinéraire en appelant setRouteCalloutInfoFormat
dans NavigationView
(ou dans NavigationFragment
). setRouteCalloutInfoFormat
utilise l'une des valeurs d'énumération suivantes:
Valeur d'énumération | Description |
---|---|
RouteCalloutInfoFormat.DEFAULT | Affiche le temps restant lorsque vous utilisez la meilleure stratégie de routage de routes par défaut. Affiche la distance restante lorsque vous utilisez la stratégie d'itinéraire d'itinéraire plus court. |
RouteCalloutInfoFormat.TIME | Affiche le temps restant. |
RouteCalloutInfoFormat.DISTANCE | Affiche la distance restante. |
Exemple
L'exemple de code suivant montre comment configurer le format d'accroche de route.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);