Cómo llegar a los puntos de navegación

El SDK de Navigation para iOS ofrece formas mejoradas de especificar puntos de referencia o puntos de navegación, lo que proporciona un enrutamiento más preciso y una mejor experiencia de llegada, en especial para destinos con varias entradas o puntos de navegación específicos. Puedes enrutar a ubicaciones precisas con un navigationPointToken, que es una cadena que codifica una ubicación y un contexto de ruta adicional. También puedes combinar las coordenadas de latitud y longitud con un ID de lugar para agregar contexto.

Fondo

Antes de la versión 10.10, podías definir un Waypoint con coordenadas de ubicación o un ID de lugar. Si bien a veces es eficaz, el enrutamiento solo a una latitud y longitud puede generar puntos de partida o llegada no óptimos, en especial para lugares grandes, parques o edificios con varias entradas. El resultado podría ajustarse al segmento de ruta más cercano, que podría no ser el punto de acceso más conveniente o correcto.

Las opciones mejoradas de puntos de referencia abordan este problema, ya que te permiten proporcionar más contexto.

Usa un token de punto de navegación

Para obtener el enrutamiento más preciso a puntos de acceso específicos, como entradas, muelles de carga o áreas de llegada designadas, puedes usar un navigationPointToken.

Este token se obtiene llamando al método Destinations de la API de Geocoding API. Representa un punto de navegación específico y enrutable asociado con un lugar.

Para especificar un token de punto de navegación, haz lo siguiente:

  1. Obtén un navigationPointToken del método Destinations de la API de Geocoding respuesta.

  2. Especifica ese navigationPointToken cuando crees un GMSNavigationWaypoint.

Nota: No puedes especificar un token de punto de navegación junto con una ubicación y un PlaceID de forma simultánea.

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"

Usa tokens de punto de navegación y tokens de ruta

Puedes recuperar un token de punto de navegación a través de la API de Geocoding, recuperar un token de ruta de la API de Routes y, luego, pasar el token de punto de navegación y el token de ruta al SDK de Navigation. Esto es útil en situaciones como viajes compartidos o entregas, en las que usas la API de Routes para calcular el precio de un viaje y quieres la precisión de un token de punto de navegación.

El token de ruta sesga la ruta elegida por el SDK de Navigation hacia la ruta que se usó para la fijación de precios. Esto reduce el riesgo de que se usen rutas más largas o más cortas para el viaje, lo que puede generar "sorpresas de precios".

Consulta la documentación de la API de Routes para obtener más información sobre cómo especificar una ubicación con un token de punto de navegación y crear un token de ruta. Consulta "Planifica una ruta" para aprender a planificar una ruta con un token de ruta.

En este diagrama, se muestra cómo una app de viajes compartidos o de entrega usaría tokens de punto de navegación y tokens de ruta juntos:

Diagrama de caso de uso de viajes compartidos o entregas
Diagrama de un caso de uso de viajes compartidos o de entrega

Combina el ID de lugar y la ubicación

A partir de la versión 10.10, puedes proporcionar tanto un ID de lugar como coordenadas de ubicación cuando creas un punto de referencia. Este método es útil cuando deseas especificar un punto preciso (la ubicación) y, al mismo tiempo, proporcionar el contexto del lugar general (el ID de lugar). Esto permite que el SDK de Navigation proporcione una experiencia de llegada más enriquecida, ya que destaca el edificio de destino o muestra puntos de interés cercanos relacionados con el ID de lugar.

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

Consideraciones:

Cuando proporcionas placeID y location, ocurre lo siguiente:

  • La ruta se orienta principalmente a la location especificada.
  • El placeId se usa como contexto para mejorar la experiencia de llegada.
  • Respaldo: Si el SDK determina que el placeId proporcionado corresponde a una función que está demasiado lejos de la location determinada, se ignorará el placeId. En este caso, el enrutamiento continuará solo a la location, y las mejoras de la experiencia de llegada específicas del lugar no estarán disponibles.

Resumen de las configuraciones de puntos de referencia válidas

Especificación location placeID navigationPointToken Comportamiento de enrutamiento Destacado del destino
Solo coordenadas de ubicación set ausente ausente Dirige al segmento de ruta más cercano a las coordenadas definidas Se muestra si el destino se puede inferir con alta confianza
Solo ID de lugar ausente set ausente Dirige al punto de navegación predeterminado para el ID de lugar Desde el ID de lugar
Solo token de punto de navegación ausente ausente set Dirige al punto de navegación preciso representado por el token Desde el destino definido en el método de destinos original de la solicitud de la API de Geocoding
Coordenadas de ubicación y ID de lugar combinados se set ausente Dirige al segmento de ruta más cercano a las coordenadas definidas Desde el ID de lugar, aunque no se muestra si el ID de lugar está demasiado lejos de las coordenadas de latitud y longitud