Cómo llegar a los puntos de navegación

El SDK de Navigation para Android 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 los destinos con varias entradas o puntos de navegación específicos. Puedes generar 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 agregar contexto.

Fondo

Antes de la versión 7.4, podías definir un Waypoint con coordenadas de latitud y longitud o un ID de lugar. Si bien a veces es eficaz, enrutar solo a una latitud y longitud puede generar puntos de partida o destino no ó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 tal vez no sea el punto de navegación más conveniente o correcto.

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

Cómo usar un token de punto de navegación

Para obtener la ruta más precisa a puntos de navegación 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 con ruta asociada a un lugar.

Para especificar un token de Navigation Point, haz lo siguiente:

  1. Obtén un objeto navigationPointToken de la respuesta del método Destinations de la API de Geocoding.
  2. Crea un Waypoint con el método setNavigationPointToken() en el compilador.

Nota: Cuando uses setNavigationPointToken(), no podrás usar setLatLng() ni setPlaceIdString() de forma simultánea. Estos métodos son mutuamente excluyentes con setNavigationPointToken().

// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint

Waypoint waypointWithToken = Waypoint.builder()
    .setTitle(destinationName)
    .setNavigationPointToken(navPointToken)
    .build();

// Use this waypoint in navigator.setDestinations()

Usa tokens de puntos de navegación y de rutas

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 tanto el token de punto de navegación como 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 deseas 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 determinación del 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".

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 los tokens de puntos de navegación y los tokens de ruta juntos:

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

Combina el ID de lugar con la latitud y la longitud

A partir de la versión 7.4, puedes proporcionar tanto un ID de lugar como coordenadas de latitud y longitud cuando creas un Waypoint. Este método es útil cuando deseas especificar un punto preciso (la latitud y la longitud) 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 los puntos de interés cercanos relacionados con el ID de lugar.

// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint

Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
    .setTitle(destinationName)
    .setPlaceIdString(placeId)
    .setLatLng(lat, lng)
    .build();

// Use this waypoint in navigator.setDestinations()

Consideraciones

Cuando proporcionas placeId y latlng, ocurre lo siguiente:

  • La ruta se dirige principalmente al latlng especificado.
  • El placeId se usa como contexto para mejorar la experiencia de llegada.
  • Respaldo: Si el SDK determina que el objeto placeId proporcionado corresponde a una función que está demasiado lejos del objeto latlng determinado, se ignorará el objeto placeId. En este caso, el enrutamiento solo se realizará hacia el latlng, y no estarán disponibles las mejoras en la experiencia de llegada específicas del lugar.

Resumen de las configuraciones de puntos de referencia válidas

Método setLatLng() setPlaceIdString() setNavigationPointToken() Comportamiento de enrutamiento Destacado de destino
Solo coordenadas de latitud y longitud set ausente ausente Rutas hacia el tramo de la ruta más cercano a las coordenadas definidas Se muestra si se puede inferir el destino 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 representado por el token Es el destino definido en la solicitud original del método destinations de la API de Geocoding.
Combinación de coordenadas de latitud y longitud, y el ID de lugar set set ausente Rutas hacia el tramo de la 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