Los cálculos de rutas (incluido el cambio de ruta) muestran la ruta que lleva la menor cantidad de tiempo para navegar como la mejor ruta predeterminada. Sin embargo, puedes cambiar la estrategia de enrutamiento para que se muestre la más corta de las rutas alternativas.
El término más corta significa la ruta más corta entre las rutas óptimas según nuestro modelo de costos predeterminado. La ruta más corta podría no ser la absoluta más corta, ya que esa opción podría ser una alternativa deficiente. Por ejemplo, si la ruta más corta absoluta es de 10 km y lleva 50 minutos recorrerla, y otra ruta es de 15 km, pero solo lleva 20 minutos recorrerla, la segunda opción es óptima, ya que no vale la pena invertir 30 minutos para reducir cinco kilómetros.
Una vez que establezcas la estrategia de rutas para un viaje, no cambiará hasta que se complete. Para cambiar la estrategia de ruta de un viaje existente, debes borrar los destinos y restablecerlos con la nueva estrategia de ruta.
Cómo obtener detalles de la ruta
Para determinar qué estrategia de ruta es la opción óptima para un punto de referencia determinado, llama a getRouteInfo()
para obtener detalles de la ruta predeterminada óptima y de la ruta más corta absoluta. Los detalles incluyen la duración y la distancia a un punto de referencia de destino.
Estos detalles provienen de RouteInfo
y se devuelven en un objeto ListenableResultFuture
.
Ejemplo
En el siguiente ejemplo de código, se muestra cómo obtener los detalles de la ruta para cada una de las dos estrategias de rutas.
ListenableResultFuture<RouteInfo> routeInfoFuture =
navigator.getRouteInfo(waypoint, routingOptions);
Cómo establecer la estrategia de enrutamiento
Puedes configurar la estrategia de enrutamiento estableciendo RoutingOptions.routingStrategy
cuando llamas a setDestinations()
.
RoutingOptions.routingStrategy
toma uno de los siguientes valores de enumeración:
Valor de enumeración | Descripción |
---|---|
RoutingStrategy.DEFAULT_BEST | Clasifica las rutas según el modelo de costos predeterminado del SDK de Navigation. Esta es la estrategia de enrutamiento predeterminada. |
RoutingStrategy.SHORTER | Clasifica las rutas por distancia. La ruta con la clasificación más alta es la más corta de las que se muestran. |
Ejemplo
En el siguiente ejemplo de código, se muestra cómo establecer la preferencia de ruta más corta.
RoutingOptions routingOptions = new RoutingOptions();
routingOptions.routingStrategy(RoutingStrategy.SHORTER);
navigator.setDestinations(destinations, routingOptions, displayOptions);
Rutas que incluyen ferris
De forma predeterminada, el NavSDK excluye las rutas que incluyen transbordadores. Si prefieres incluir opciones de ferry como parte de tus rutas, puedes ajustar esta preferencia de enrutamiento para exponer el viaje a los tramos de ferry configurando avoidFerries
en false
.
Ejemplo
RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);
Formato del texto destacado de la ruta
En la preferencia de ruta más corta, las leyendas a lo largo de la ruta muestran detalles de distancia. Sin embargo, puedes usar los textos destacados de ETA.
Cómo configurar el formato del texto destacado de la ruta
Puedes cambiar el formato de la leyenda de ruta llamando a setRouteCalloutInfoFormat
en NavigationView
(o en NavigationFragment
). setRouteCalloutInfoFormat
toma uno de los siguientes valores de enumeración:
Valor de enumeración | Descripción |
---|---|
RouteCalloutInfoFormat.DEFAULT | Muestra el tiempo restante cuando se usa la estrategia de rutas de la mejor ruta predeterminada. Muestra la distancia restante cuando se usa la estrategia de ruta más corta. |
RouteCalloutInfoFormat.TIME | Muestra el tiempo restante. |
RouteCalloutInfoFormat.DISTANCE | Muestra la distancia restante. |
Ejemplo
En el siguiente ejemplo de código, se muestra cómo configurar el formato de la llamada de ruta.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);