O SDK Navigation para Android oferece maneiras aprimoradas de especificar pontos de referência, fornecendo rotas mais precisas e uma melhor experiência de chegada, especialmente para destinos com várias entradas ou pontos de acesso específicos. É possível traçar rotas para locais precisos usando um navigationPointToken ou combinando coordenadas de latitude e longitude com um ID de lugar para adicionar contexto. O recurso de destaque do destino vai continuar sendo usado, se aplicável.
Contexto
Antes da v7.4, era possível definir um Waypoint usando coordenadas de latitude e longitude ou um ID de lugar. Embora seja eficaz para a maioria dos casos de uso, o roteamento apenas para uma latitude e longitude às vezes pode levar a pontos de desembarque ou embarque inadequados, principalmente para locais grandes, parques ou edifícios com várias entradas. O resultado pode ser ajustado ao trecho de rua mais próximo, que talvez não seja o ponto de acesso mais conveniente ou correto.
As opções de ponto de referência aprimoradas resolvem isso permitindo que mais contexto seja fornecido.
Combinar ID do lugar, latitude e longitude
A partir da v7.4, é possível fornecer um ID de lugar e coordenadas de latitude e longitude ao criar um Waypoint. Esse método é útil quando você quer especificar um ponto exato (latitude/longitude) e ainda fornecer o contexto do lugar geral (ID do lugar). Isso permite que o SDK Navigation ofereça uma experiência de chegada mais rica, destacando o edifício de destino ou mostrando pontos de interesse próximos relacionados ao ID do 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 foco principal o
latlngespecificado. - O
placeIdé usado como contexto para melhorar a experiência de chegada. - Substituição:se o SDK determinar que o
placeIdfornecido corresponde a um recurso muito distante dolatlnginformado, oplaceIdserá ignorado. Nesse cenário, o roteamento vai continuar apenas para olatlng, e as melhorias na experiência de chegada específicas do lugar não estarão disponíveis.
Usar um token de ponto de navegação
Para ter o roteamento mais preciso até pontos de acesso específicos, como entradas, docas de carga ou áreas de coleta designadas, use um navigationPointToken. Esse token é obtido chamando o método destinations 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:
- Extraia um
navigationPointTokenda resposta do método Destinations da API Geocoding. - Crie um
Waypointusando o métodosetNavigationPointToken()no builder.
Observação:ao usar setNavigationPointToken(), não é possível usar simultaneamente
setLatLng() ou setPlaceIdString(). Esses métodos são mutuamente exclusivos com
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()
Resumo das configurações de ponto de referência válidas
| Método | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Comportamento de roteamento | Destaque do destino |
|---|---|---|---|---|---|
| Somente LatLng | set | ausente | ausente | Faz o roteamento para o segmento da via mais próximo das coordenadas definidas | Não exibido |
| Somente ID do lugar | ausente | set | ausente | Rotas para o ponto de acesso padrão do ID do lugar | De PlaceID |
| Somente token de ponto de navegação | ausente | ausente | set | Rotas para o ponto de acesso exato representado pelo token | Do destino definido no método destinations original da solicitação da API Geocoding |
| Latitude/longitude e ID do lugar combinados | set | set | ausente | Faz o roteamento para o segmento da via mais próximo das coordenadas definidas | Do PlaceID, mas não mostrado se o PlaceID estiver muito longe de LatLng |