L'SDK Navigation per iOS offre modi avanzati per specificare i waypoint o i punti di navigazione, fornendo un routing più preciso e una migliore esperienza di arrivo, in particolare per le destinazioni con più ingressi o punti di navigazione specifici. Puoi eseguire il routing verso località precise utilizzando un navigationPointToken, ovvero una stringa che codifica una località e un contesto di route aggiuntivo. Puoi anche combinare le coordinate di latitudine e longitudine con un ID luogo per aggiungere contesto.
Sfondo
Prima della versione 10.10, potevi definire un Waypoint utilizzando le coordinate della località o un ID luogo. Sebbene a volte efficace, il routing esclusivamente verso una latitudine e una longitudine può a volte portare a punti di discesa o di prelievo non ottimali, in particolare per grandi sedi, parchi o edifici con più ingressi. Il risultato potrebbe essere allineato al segmento di strada più vicino, che potrebbe non essere il punto di accesso più comodo o corretto.
Le opzioni di waypoint avanzate risolvono questo problema consentendoti di fornire più contesto.
Utilizzare un token del punto di navigazione
Per un routing più preciso verso punti di accesso specifici come ingressi, banchine di carico o aree di prelievo 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
navigationPointTokendalla risposta del metodo Destinations dell'API Geocoding.Specifica
navigationPointTokenquando crei unGMSNavigationWaypoint.
Nota: non puoi specificare contemporaneamente un token del punto di navigazione insieme a una località e a un ID luogo.
Swift
// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"
Utilizzare i token del punto di navigazione e i token di route
Puoi recuperare un token del punto di navigazione tramite l'API Geocoding, recuperare un token di route dall'API Routes e poi passare sia il token del punto di navigazione sia il token di route all'SDK Navigation. Questa operazione è 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 del punto di navigazione.
Il token di route influenza la route scelta dall'SDK Navigation verso la route utilizzata per la determinazione del prezzo. In questo modo si riduce il rischio che vengano utilizzate route più lunghe o più brevi per il viaggio, il che può creare "shock di prezzo".
Per ulteriori informazioni su come specificare una località utilizzando un token del punto di navigazione e creare un token di route , consulta la documentazione dell'API Routes. Consulta "Pianificare una route" per scoprire come pianificare una route utilizzando un token di route.
Questo diagramma mostra come un'app di ridesharing o di consegna utilizzerebbe insieme i token del punto di navigazione e i token di route:
Combinare ID luogo e località
A partire dalla versione 10.10, puoi fornire sia un ID luogo sia le coordinate della località quando crei un waypoint. Questo metodo è utile quando vuoi specificare un punto preciso (la località) fornendo al contempo il contesto del luogo complessivo (l'ID luogo). In questo modo, l'SDK Navigation può offrire un'esperienza di arrivo più completa evidenziando l'edificio di destinazione o mostrando i punti di interesse nelle vicinanze correlati all'ID luogo.
Swift
// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),
placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];
Considerazioni:
Quando fornisci sia placeID sia location:
- La route ha come target principale la
locationspecificata. placeIdviene utilizzato come contesto per migliorare l'esperienza di arrivo.- Fallback: se l'SDK determina che il
placeIdfornito corrisponde a una funzionalità troppo lontana dallalocationspecificata,placeIdverrà ignorato. In questo scenario, il routing procederà solo verso lalocatione i miglioramenti dell'esperienza di arrivo specifici per il luogo non saranno disponibili.
Riepilogo delle configurazioni di waypoint valide
| Specifica | location |
placeID |
navigationPointToken |
Comportamento di routing | Evidenziazione della destinazione |
|---|---|---|---|---|---|
| Solo coordinate della località | imposta | assente | assente | Esegue il routing al segmento di strada più vicino alle coordinate definite | Mostrato se la destinazione può essere dedotta con un'alta probabilità |
| Solo ID luogo | assente | imposta | assente | Esegue il routing al punto di navigazione predefinito per l'ID luogo | Dall'ID luogo |
| Solo token del punto di navigazione | assente | assente | imposta | Esegue il routing al punto di navigazione preciso rappresentato dal token | Dalla destinazione definita nel metodo delle destinazioni originale della richiesta dell'API Geocoding |
| Coordinate della località e ID luogo combinati | se | imposta | assente | Esegue il routing al 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 |