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ù 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:

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

  2. Specifica navigationPointToken quando crei un GMSNavigationWaypoint.

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:

Diagramma del caso d'uso per il servizio di ride sharing o di consegna
Diagramma di un caso d'uso di ridesharing o di consegna

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 location specificata.
  • placeId viene utilizzato come contesto per migliorare l'esperienza di arrivo.
  • Fallback: se l'SDK determina che il placeId fornito corrisponde a una funzionalità troppo lontana dalla location specificata, placeId verrà ignorato. In questo scenario, il routing procederà solo verso la location e 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