Percorso verso i punti di navigazione

L'SDK Navigation per iOS 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 10.10, potevi definire un Waypoint utilizzando le coordinate della località o un ID luogo. Sebbene a volte sia efficace, l'itinerario basato esclusivamente su latitudine e longitudine può talvolta portare a punti di partenza o di arrivo non ottimali, in particolare per luoghi di grandi dimensioni, parchi o edifici con più ingressi. Il risultato potrebbe agganciarsi al segmento stradale più vicino, che potrebbe non essere il punto di accesso più comodo o corretto.

Le opzioni avanzate per i waypoint risolvono questo problema consentendoti di fornire più contesto.

Utilizza un token Navigation Point

Per un routing più preciso verso punti di accesso 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:

  1. Ottieni un navigationPointToken dalla risposta del metodo Destinations dell'API Geocoding.

  2. Specifica navigationPointToken quando crei un GMSNavigationWaypoint.

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] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

Utilizza i token dei punti di navigazione e i token dei percorsi

Puoi recuperare un token del punto di navigazione tramite l'API Geocoding, recuperare un token del percorso dall'API Routes e poi passare entrambi i token all'SDK Navigation. Questo è utile in scenari come il rideshare o la consegna, in cui utilizzi l'API Routes per calcolare il prezzo di un percorso e vuoi la precisione di un token del punto di navigazione.

Con il token del percorso, l'SDK Navigation avvia la navigazione sullo stesso percorso che hai utilizzato per calcolare il prezzo. In questo modo si riduce il rischio che vengano utilizzati percorsi più lunghi o più brevi per la corsa, il che può creare "shock dei prezzi".

Per ulteriori informazioni su come specificare una località utilizzando un token del punto di navigazione e creare un token di percorso, consulta la documentazione dell'API Routes. Consulta "Pianifica un percorso" per scoprire come pianificare un percorso utilizzando un token di percorso.

Questo diagramma mostra come un'app di car pooling o di consegna utilizza i token dei punti di navigazione e i token dei percorsi insieme:

Diagramma del caso d'uso di car sharing o consegna
Diagramma di un caso d'uso di car pooling o consegna

Combina 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 posizione) fornendo al contempo il contesto del luogo complessivo (l'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 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 che location:

  • La route ha come target principale l'intervallo location specificato.
  • La placeId viene utilizzata come contesto per migliorare l'esperienza di arrivo.
  • Fallback: se l'SDK determina che la placeId fornita corrisponde a un elemento troppo lontano dalla location specificata, la placeId verrà ignorata. In questo scenario, il percorso continuerà solo fino a location e i miglioramenti dell'esperienza di arrivo specifici per il luogo non saranno disponibili.

Riepilogo delle configurazioni dei waypoint valide

Specifica location placeID navigationPointToken Comportamento di routing Evidenziazione della destinazione
Solo coordinate della posizione 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 della località e ID luogo combinati se 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