Ajustar las preferencias de enrutamiento

Los cálculos de ruta (incluido el redireccionamiento) muestran la ruta que toma 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 alternativa de ruta más corta.

El término más corta se refiere a la ruta más corta entre las óptimas según nuestro modelo de costo predeterminado. Es posible que la ruta más corta no sea la absoluta más corta, ya que esa opción podría ser una mala alternativa. Por ejemplo, si la ruta absoluta más corta es de 10 km y tarda 50 minutos en navegar, y otra ruta es de 15 km, pero solo tarda 20 minutos en recorrerla, la segunda opción es óptima, ya que dedicar 30 minutos para reducir cinco km no es un buen equilibrio.

Una vez que configures la estrategia de planificación de ruta para un viaje, no cambiará hasta que este se complete. Para cambiar la estrategia de ruta de un viaje existente, debes borrar los destinos y restablecerlos nuevamente con la nueva estrategia de ruta.

Obteniendo 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 mejor ruta predeterminada y de la ruta absolutamente más corta. Los detalles incluyen la duración y la distancia hasta 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 detalles de 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){...}];

Establece la estrategia de enrutamiento

Para configurar la estrategia de enrutamiento, usa GMSNavigationRoutingOptions y establece routingStrategy cuando llames a setDestinations().

routingStrategy toma uno de los siguientes valores de enumeración:

Valor de enumeraciónDescripción
GMSNavigationRoutingStrategyDefaultBest Clasifica las rutas según el modelo de costos predeterminado del SDK de Navigation. Esta es la estrategia de enrutamiento predeterminada.
GMSNavigationRoutingStrategyShorter Clasifica las rutas por distancia. La ruta de 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 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 ferris

De forma predeterminada, el SDK de Navigation para iOS excluye las rutas que incluyen transbordadores. Si prefieres incluir opciones de transbordador como parte de tus rutas, puedes ajustar esta preferencia de ruta para exponer el viaje a los tramos de transbordador. Para ello, establece avoidsFerries en false.

Ejemplo

Swift

self.mapView.navigator?.avoidsFerries = false

Objective‑C

self.mapView.navigator.avoidsFerries = NO

El formato del texto destacado 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 distancia. Sin embargo, puedes usar los textos destacados de ETA.

Configura el formato de texto destacado de la ruta

Para cambiar el formato de texto destacado de la ruta, configura routeCalloutFormat en GMSMapView. routeCalloutFormat toma uno de los siguientes valores de enumeración:

Valor de enumeraciónDescripción
GMSNavigationRouteCalloutFormatDefault Muestra el tiempo restante cuando se usa la mejor estrategia de enrutamiento de ruta predeterminada. Muestra la distancia restante cuando se utiliza la estrategia de enrutamiento de ruta más corta
GMSNavigationRouteCalloutFormatTime Muestra el tiempo restante.
GMSNavigationRouteCalloutFormatDistance DMuestra 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;