O SDK do Navigation para Android oferece maneiras aprimoradas de especificar pontos de referência ou de navegação, proporcionando rotas mais precisas e uma melhor experiência de chegada, especialmente para destinos com várias entradas ou pontos de navegação específicos. É possível traçar rotas para locais precisos usando um
navigationPointToken, que é uma string que codifica um local e um contexto de rota
adicional. Também é possível combinar coordenadas de latitude e longitude com um ID de lugar para dar mais contexto.
Contexto
Antes da v7.4, era possível definir um Waypoint usando coordenadas de latitude e longitude ou um ID de lugar. Embora às vezes seja eficaz, o trajeto
apenas para uma latitude e longitude pode levar a pontos de embarque ou desembarque
abaixo do ideal, principalmente para grandes locais, parques ou edifícios com várias
entradas. O resultado pode ser fixado ao trecho de via mais próximo, que pode não ser o ponto de navegação mais conveniente ou correto.
As opções de waypoint avançadas resolvem isso permitindo que mais contexto seja fornecido.
Usar um token de ponto de navegação
Para o trajeto mais preciso até pontos de navegação específicos, como entradas, docas de carga ou áreas de retirada designadas, use um
navigationPointToken. Esse token é obtido chamando o método de destinos da API Geocoding. Ele representa um ponto de navegação específico e roteável associado a um lugar.
Para especificar um token de ponto de navegação:
- Receba um
navigationPointTokenda resposta do método Destinations da API Geocoding. - Crie um
Waypointusando o métodosetNavigationPointToken()no builder.
// 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()
Usar tokens de ponto de navegação e de trajeto
É possível recuperar um token de ponto de navegação pela API Geocoding, recuperar um token de rota pela API Routes e transmitir ambos para o SDK do Navigation. Isso é útil em cenários como viagens compartilhadas ou entregas, em que você usa a API Routes para calcular o preço de uma viagem e quer a precisão de um token de ponto de navegação.
Com o token de trajeto, o SDK do Navigation inicia a navegação no mesmo trajeto que você usou para calcular o preço. Isso reduz o risco de rotas mais longas ou mais curtas serem usadas na viagem, o que pode criar "choques de preço".
Consulte a documentação da API Routes para mais informações sobre como especificar um local usando um token de ponto de navegação e criar um token de rota. Consulte Planejar um trajeto para saber como fazer isso usando um token de trajeto.
Este diagrama mostra como um app de transporte por aplicativo ou de entrega usaria tokens de ponto de navegação e de rota juntos:
Combinar ID de lugar com latitude e longitude
A partir da v7.4, é possível fornecer um ID de lugar e as coordenadas de latitude e longitude ao criar um Waypoint. Esse método é útil quando você quer especificar um ponto preciso (latitude/longitude) e, ao mesmo tempo, fornecer o contexto do lugar geral (o ID de lugar). Assim, o SDK do Navigation pode oferecer uma experiência de chegada mais completa, destacando o edifício de destino ou mostrando pontos de interesse próximos relacionados ao 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()
Considerações
Quando você fornece placeId e latlng:
- A rota tem como destino principal o
latlngespecificado. - O
placeIdé usado como contexto para melhorar a experiência de chegada. - Substituto:se o SDK determinar que o
placeIdfornecido corresponde a um recurso muito distante dolatlng, oplaceIdserá ignorado. Nesse cenário, o trajeto vai seguir apenas para olatlng, e as melhorias na experiência de chegada específicas do lugar não estarão disponíveis.
Resumo das configurações válidas de waypoint
| Método | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Comportamento de roteamento | Destaque de destino |
|---|---|---|---|---|---|
| Apenas coordenadas de latitude/longitude | set | ausente | ausente | Rotas para o trecho da via mais próximo das coordenadas definidas | Mostrado se o destino puder ser inferido com alta confiança |
| Somente ID de lugar | ausente | set | ausente | Trajetos até o ponto de navegação padrão do ID de lugar | Do ID de lugar |
| Somente token de ponto de navegação | ausente | ausente | set | Traça rotas para o ponto de navegação preciso representado pelo token. | Do destino definido no método original destinations da solicitação da API Geocoding |
| Coordenadas de latitude/longitude e ID de lugar combinados | set | set | ausente | Rotas para o trecho da via mais próximo das coordenadas definidas | Do ID de lugar, mas não será mostrado se o ID estiver muito longe das coordenadas de latitude/longitude. |