El SDK de Navigation para iOS ofrece formas mejoradas de especificar puntos de referencia o 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 trazar rutas 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 obtener más contexto.
Fondo
Antes de la versión 10.10, podías definir un Waypoint con las coordenadas de ubicación
o un ID de lugar. Si bien a veces es eficaz, trazar una ruta solo a una latitud y longitud puede generar puntos de llegada o partida poco óptimos, en especial para lugares grandes, parques o edificios con varias entradas. El resultado podría ajustarse al tramo de ruta más cercano, que podría no ser
el punto de acceso más conveniente o correcto.
Las opciones de puntos de referencia mejorados abordan este problema, ya que te permiten proporcionar más contexto.
Usa un token de punto de navegación
Para obtener la ruta más precisa a puntos de acceso específicos, como entradas, muelles de carga o áreas de retiro designadas, puedes usar un
navigationPointToken.
Este token se obtiene llamando al método Destinations de la API de Geocoding. Representa un punto de navegación específico y enrutable asociado con un lugar.
Para especificar un token de punto de navegación, sigue estos pasos:
Obtén un
navigationPointTokende la respuesta del métodoSearchDestinationsde la API de Geocoding.Especifica ese
navigationPointTokencuando crees unGMSNavigationWaypoint.
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] initWithNavigationPointToken:@"sampleNavigationPointToken"
title:@"Sydney Opera House"];
Usa tokens de puntos de navegación y tokens de ruta
Puedes recuperar un token de punto de navegación a través de la API de Geocoding, usarlo en una solicitud a la API de Routes para obtener un token de ruta y, luego, pasar solo el token de ruta al SDK de Navigation. El token de ruta mantiene la precisión del token de punto de navegación. 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 deseas la precisión de un token de punto de navegación.
Con el token de ruta, el SDK de Navigation inicia la navegación en la misma ruta que usaste para calcular el precio. Esto reduce el riesgo de que se usen rutas más largas o más cortas para el viaje, lo que puede generar "sorpresas en el precio".
Para obtener más información sobre los tokens de puntos de navegación y los tokens de ruta en la API de Routes, consulta Especifica ubicaciones para una ruta y Obtén un token de ruta. Para obtener información sobre cómo planificar una ruta con un token de ruta, consulta Planifica una ruta.
En el siguiente diagrama, se muestra cómo una app de viajes compartidos o de entregas usaría los tokens de punto de navegación y los tokens de ruta juntos. A partir de la versión 11.3, la app del conductor solo pasa el token de ruta al SDK de Navigation en el paso 7.
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 al
locationespecificado. - La
placeIDproporciona contexto que mejora la experiencia de llegada. - Resguardo: Si el SDK determina que el
placeIDproporcionado corresponde a un elemento que está demasiado lejos dellocationdado, ignora elplaceID. En este caso, la ruta solo se dirige a lalocation, y no están disponibles las mejoras en la experiencia de llegada específicas del lugar.
Resumen de las configuraciones de puntos de referencia válidas
| Especificación | location |
placeID |
navigationPointToken |
Comportamiento de enrutamiento | Destacado de destino |
|---|---|---|---|---|---|
| Solo coordenadas de ubicación | set | ausente | ausente | Rutas al tramo de ruta más cercano a las coordenadas definidas | Se muestra si el destino se puede inferir con un alto nivel de confianza |
| Solo ID de lugar | ausente | set | ausente | Rutas al punto de navegación predeterminado para el ID de lugar | ID de lugar de origen |
| Solo token de punto de navegación | ausente | ausente | set | Rutas al punto de navegación preciso que representa el token | Desde el destino definido en la solicitud original del método destinations de la API de Geocoding |
| Combinación de coordenadas de ubicación y el ID de lugar | set | set | ausente | Rutas al tramo 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 |