L'SDK Navigation per Android offre modi avanzati per specificare i waypoint o
i punti di navigazione, fornendo un routing più preciso e una migliore esperienza
di arrivo, soprattutto per le destinazioni con più ingressi o punti di
navigazione specifici. Puoi raggiungere posizioni esatte utilizzando un
navigationPointToken, ovvero una stringa che codifica una posizione e un contesto
aggiuntivo dell'itinerario. Puoi anche combinare le coordinate di latitudine e longitudine con un
ID luogo per un contesto aggiuntivo.
Sfondo
Prima della versione 7.4, potevi definire un Waypoint utilizzando le coordinate di latitudine e longitudine o un ID luogo. Sebbene a volte efficace, l'indirizzamento
solo a una latitudine e una longitudine può talvolta portare a punti di partenza o
arrivo non ottimali, in particolare per grandi sedi, parchi o edifici con più
ingressi. Il risultato potrebbe allinearsi al segmento stradale più vicino, che potrebbe non essere
il punto di navigazione più comodo o corretto.
Le opzioni avanzate per i waypoint risolvono questo problema consentendo di fornire più contesto.
Utilizzare un token punto di navigazione
Per un percorso più preciso verso punti di navigazione specifici come ingressi,
banchine di carico o aree di ritiro designate, puoi utilizzare un
navigationPointToken. Questo token viene ottenuto chiamando il metodo destinations
dell'API Geocoding. Rappresenta un punto di navigazione specifico e instradabile associato a un luogo.
Per specificare un token punto di navigazione:
- Ottieni un
navigationPointTokendal metodo Destinations dell'API Geocoding response. - Crea un
Waypointutilizzando il metodosetNavigationPointToken()nel builder.
Nota:quando utilizzi setNavigationPointToken(), non puoi utilizzare contemporaneamente
setLatLng() o setPlaceIdString(). Questi metodi si escludono a vicenda 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()
Utilizzare i token dei punti di navigazione e dei percorsi
Puoi recuperare un token del punto di navigazione tramite l'API Geocoding, recuperare un token di itinerario dall'API Routes e poi passare sia il token del punto di navigazione sia il token di itinerario all'SDK Navigation. Ciò è utile in scenari come il ridesharing o la consegna, in cui utilizzi l'API Routes per calcolare il prezzo di un viaggio e vuoi la precisione di un token di punto di navigazione.
Il token di percorso influenza il percorso scelto dall'SDK Navigation verso il percorso utilizzato per la determinazione del prezzo. In questo modo si riduce il rischio che vengano utilizzati per il viaggio percorsi più lunghi o più brevi, il che può creare "shock dei prezzi".
Per saperne di più su come specificare una posizione utilizzando un token punto di navigazione e su come creare un token di percorso, consulta la documentazione dell'API Routes. Consulta "Pianificare un percorso" per scoprire come pianificare un percorso utilizzando un token di percorso.
Questo diagramma mostra come un'app di ridesharing o di consegna utilizzerebbe insieme i token del punto di navigazione e i token del percorso:
Combinare l'ID luogo con la latitudine e la longitudine
A partire dalla versione 7.4, puoi fornire sia un ID luogo sia le coordinate di latitudine e longitudine quando crei un Waypoint. Questo metodo è utile quando vuoi
specificare un punto preciso (latitudine/longitudine) fornendo comunque il contesto del
luogo complessivo (l'ID luogo). In questo modo, l'SDK Navigation può offrire un'esperienza di arrivo più ricca evidenziando l'edificio della destinazione o mostrando punti d'interesse nelle vicinanze correlati all'ID luogo.
// 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()
Considerazioni
Quando fornisci sia placeId che latlng:
- La route ha come target principale il
latlngspecificato. placeIdviene utilizzato come contesto per migliorare l'esperienza di arrivo.- Fallback: se l'SDK determina che
placeIdfornito corrisponde a una funzionalità troppo distante dalatlngfornito,placeIdverrà ignorato. In questo scenario, il percorso proseguirà solo fino alatlnge i miglioramenti dell'esperienza di arrivo specifici per il luogo non saranno disponibili.
Riepilogo delle configurazioni di waypoint valide
| Metodo | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Comportamento di routing | Evidenziazione della destinazione |
|---|---|---|---|---|---|
| Solo coordinate di latitudine/longitudine | imposta | assente | assente | Percorsi per il segmento di strada più vicino alle coordinate definite | Visualizzato se la destinazione può essere dedotta con un'alta confidenza |
| Solo ID luogo | assente | imposta | assente | Percorsi verso il punto di navigazione predefinito per l'ID luogo | ID luogo di partenza |
| Solo token del punto di navigazione | assente | assente | imposta | Percorsi verso il punto di navigazione preciso rappresentato dal token | Dalla destinazione definita nel metodo destinations originale dell'API Geocoding |
| Coordinate di latitudine/longitudine e ID luogo combinati | imposta | imposta | assente | Percorsi per il segmento di strada più vicino alle coordinate definite | Dall'ID luogo, anche se non viene mostrato se l'ID luogo è troppo lontano dalle coordinate di latitudine/longitudine |