Los cálculos de ruta (incluida la modificación de ruta) muestran la ruta que tarda menos tiempo en navegar como la mejor ruta predeterminada. Sin embargo, puedes cambiar la estrategia de enrutamiento para que se muestre la alternativa de ruta más corta.
El término más corta se refiere a la ruta que es la más corta entre las rutas óptimas según nuestro modelo de costos predeterminado. Es posible que la ruta más corta no sea la absoluta, ya que esa opción podría ser una alternativa poco conveniente. Por ejemplo, si la ruta más corta absoluta es de 10 km y tarda 50 minutos en recorrerse, y otra ruta es de 15 km, pero solo tarda 20 minutos en recorrerse, la segunda opción es la óptima, ya que pasar 30 minutos para reducir cinco kilómetros no es una buena compensación.
Una vez que configures la estrategia de planificación de ruta para un viaje, esta no cambiará hasta que se complete. Para cambiar la estrategia de enrutamiento de un viaje existente, debes borrar los destinos y volver a restablecerlos con la nueva estrategia de enrutamiento.
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 getRouteInfoForDestination()
para obtener detalles de la ruta para la mejor ruta predeterminada y 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 GMSNavigationRouteInfo
en la devolución de llamada.
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 enrutamiento.
Swift
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
Cómo configurar la estrategia de enrutamiento
Puedes configurar la estrategia de enrutamiento con GMSNavigationRoutingOptions
y configurar routingStrategy
cuando llames a setDestinations()
.
routingStrategy
toma uno de los siguientes valores de enumeración:
Valor de enumeración | Descripción |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Clasifica las rutas según el modelo de costo predeterminado del SDK de Navigation. Esta es la estrategia de enrutamiento predeterminada. |
GMSNavigationRoutingStrategyShorter | 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 configurar la estrategia de enrutamiento de ruta más corta.
Swift
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];
Rutas que incluyen transbordadores
De forma predeterminada, el SDK de Navigation para iOS excluye las rutas que incluyen transbordadores. Si prefieres incluir opciones de ferry como parte de tus rutas, puedes ajustar esta preferencia de planificación de ruta para exponer el viaje a los tramos de ferry configurando avoidsFerries
como false
.
Ejemplo
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
El formato de la leyenda de la ruta
En la estrategia de enrutamiento de ruta más corta, los textos destacados a lo largo de la ruta muestran detalles de la distancia. Sin embargo, puedes usar los textos destacados de la hora de llegada estimada.
Cómo configurar el formato de texto destacado de la ruta
Para cambiar el formato de la leyenda de la ruta, establece routeCalloutFormat
en GMSMapView
. routeCalloutFormat
toma uno de los siguientes valores de enumeración:
Valor de enumeración | Descripción |
---|---|
GMSNavigationRouteCalloutFormatDefault | Muestra el tiempo restante cuando se usa la estrategia de enrutamiento de la mejor ruta predeterminada. Muestra la distancia restante cuando se usa la estrategia de enrutamiento de ruta más corta. |
GMSNavigationRouteCalloutFormatTime | Muestra el tiempo restante. |
GMSNavigationRouteCalloutFormatDistance | Muestra la distancia restante. |
Ejemplo
En el siguiente ejemplo de código, se muestra cómo configurar el formato de texto destacado de la ruta.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;