L'SDK Navigation per Android offre modi avanzati per specificare i waypoint o i punti di navigazione, fornendo un routing più accurato e un'esperienza di arrivo migliore, 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 località e un contesto
di percorso aggiuntivo. Puoi anche combinare le coordinate di latitudine e longitudine con un ID luogo per aggiungere contesto.
Sfondo
Prima della versione 7.4, potevi definire un Waypoint utilizzando le coordinate di latitudine e longitudine o un ID luogo. Sebbene a volte sia efficace, il calcolo itinerario basato esclusivamente su latitudine e longitudine può talvolta portare a punti di partenza o di arrivo non ottimali, in particolare per grandi sedi, parchi o edifici con più ingressi. Il risultato potrebbe agganciarsi 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.
Utilizza un token del punto di navigazione
Per un routing 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 del punto di navigazione:
- Ottieni un
navigationPointTokendal metodoSearchDestinationsdell'API Geocoding risposta. - Crea un
Waypointutilizzando il metodosetNavigationPointToken()nel 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()
Utilizza i token dei punti di navigazione e i token dei percorsi
Puoi recuperare un token del punto di navigazione tramite l'API Geocoding, utilizzarlo in una richiesta dell'API Routes per ottenere un token del percorso e poi passare solo il token del percorso all'SDK Navigation. Il token di percorso mantiene la precisione del token del punto di navigazione. Questo è utile in scenari come il ride sharing o la consegna, in cui utilizzi l'API Routes per calcolare il prezzo di una corsa e vuoi la precisione di un token del punto di navigazione.
Con il token di percorso, l'SDK Navigation avvia la navigazione sullo stesso percorso utilizzato per calcolare il prezzo. In questo modo si riduce il rischio che per il percorso vengano utilizzati percorsi più lunghi o più brevi, il che può creare "shock dei prezzi".
Per ulteriori informazioni sui token dei punti di navigazione e sui token di percorso nell'API Routes, consulta Specifica le località per un percorso e Ottieni un token di percorso. Per scoprire come pianificare un percorso utilizzando un token di percorso, consulta Pianifica un percorso.
Il seguente diagramma mostra come un'app di car pooling o di consegna utilizza i token dei punti di navigazione e i token dei percorsi insieme. A partire dalla versione 8.1, l'app per i conducenti passa solo il token del percorso all'SDK Navigation nel passaggio 7.
Combina l'ID luogo con latitudine e 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 al contempo il contesto del luogo complessivo (ID luogo). In questo modo, l'SDK di navigazione può offrire un'esperienza di arrivo più completa evidenziando l'edificio di destinazione o mostrando i 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 l'intervallo
latlngspecificato. - La
placeIdviene utilizzata come contesto per migliorare l'esperienza di arrivo. - Fallback: se l'SDK determina che il
placeIdfornito corrisponde a una caratteristica troppo lontana dallatlngspecificato, ilplaceIdverrà ignorato. In questo scenario, il percorso procederà solo versolatlnge i miglioramenti dell'esperienza di arrivo specifici per il luogo non saranno disponibili.
Riepilogo delle configurazioni dei waypoint valide
| Metodo | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Comportamento di routing | Evidenziazione della destinazione |
|---|---|---|---|---|---|
| Solo coordinate di latitudine/longitudine | imposta | assente | assente | Esegue il routing al tratto di strada più vicino alle coordinate definite | Visualizzato se la destinazione può essere dedotta con un livello di confidenza elevato |
| 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 della richiesta dell'API Geocoding |
| Coordinate di latitudine/longitudine e ID luogo combinati | imposta | imposta | assente | Esegue il routing al tratto 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 |