Un feed di dati passo passo fornisce informazioni solo di navigazione ai dispositivi non progettati per le indicazioni di navigazione basate su mappe. Fornisce le manovre imminenti con gli elementi che fornisci:
- Icone (a sinistra, a destra, inversione a U)
- Numeri di svolta nelle rotatorie
- Nomi delle strade
- Distanze e tempi stimati per il passaggio di navigazione successivo o per la destinazione finale
Puoi utilizzare il feed passo passo per creare esperienze in cui l'interfaccia utente completa dell'SDK Navigation non è appropriata, ad esempio per i display con schermi piccoli. Ad esempio, potresti utilizzarlo per i motociclisti, dove puoi proiettare indicazioni solo di navigazione per aiutarli a raggiungere le loro destinazioni in modo più rapido e sicuro con distrazioni minime.
Elementi di visualizzazione di navigazione essenziali
I campi principali per ogni passaggio di navigazione sono il nome completo della strada,
la manovra e la distanza totale del passaggio, disponibili in
GMSNavigationStepInfo.
Per l'intero viaggio, potresti voler visualizzare il tempo e la distanza rimanenti
per il passaggio corrente o per la destinazione, tutti disponibili in
GMSNavigationNavInfo.
L'immagine a destra mostra un esempio di questi elementi di navigazione essenziali.
Configurare un listener di eventi
Per utilizzare i dati solo di navigazione, devi implementare un listener di eventi per l'evento didChangeNavInfo. All'interno del listener di eventi, accedi alle informazioni sul viaggio e sul passaggio per fornire la navigazione passo passo ai tuoi utenti.
Per implementare i gestori di eventi, il visualizzatore di visualizzazione della mappa deve implementare il
GMSNavigatorListener
protocollo. Per informazioni dettagliate sulla gestione degli eventi nell'
SDK Navigation per iOS, vedi Ascoltare gli eventi di navigazione.
Gestire l'evento didChangeNavInfo
Crea un listener per l'evento didChangeNavInfo per aggiungere il supporto passo passo alla tua app. Nel listener di eventi, utilizza le seguenti classi ed enum per controllare la navigazione passo passo:
GMSNavigationNavInfo: classe che definisce le informazioni sullo stato della navigazione.GMSNavigationStepInfo: classe che definisce le informazioni su un singolo passaggio lungo un percorso di navigazione.GMSNavigationNavState: enum che definisce lo stato attuale di una navigazione, ad esempio in viaggio, ricalcolo del percorso o interrotta.GMSNavigationDrivingSide: enum che definisce se questo passaggio si trova su un percorso con guida a destra o a sinistra.GMSNavigationManeuver: enum che definisce l'azione di navigazione da intraprendere, ad esempio svolta a sinistra o svolta a destra.
Di seguito sono riportati esempi di listener di eventi per l'evento didChangeNavInfo:
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Stati di navigazione
Utilizza la proprietà navState di GMSNavigationNavInfo
per ottenere lo stato attuale della navigazione, che è uno dei seguenti:
In viaggio : lo stato
GMSNavigationNavStateEnrouteindica che la navigazione guidata è attiva e che l'utente si trova sul percorso fornito. Sono disponibili informazioni sul passaggio di manovra imminente corrente.Ricalcolo del percorso :
GMSNavigationNavStateReroutingindica che la navigazione è in corso, ma il navigatore sta cercando un nuovo percorso. Il passaggio di manovra imminente non è disponibile perché non esiste ancora un nuovo percorso.Interrotta :
GMSNavigationNavStateStoppedindica che la navigazione è terminata. Ad esempio, la navigazione si interrompe quando l'utente esce dalla navigazione nell'app. Nell'app di esempio, uno statoGMSNavigationNavStateStoppedcancella la visualizzazione delle informazioni di navigazione per evitare che vengano visualizzate le istruzioni dei passaggi rimanenti.
Indicazione delle corsie in cui posizionarsi
L'SDK Navigation rappresenta le corsie nella scheda di svolta della navigazione come
GMSNavigationLane e GMSNavigationLaneDirection oggetti dati. Un oggetto
GMSNavigationLane rappresenta una corsia specifica durante la navigazione e contiene
un elenco di GMSNavigationLaneDirection oggetti che descrivono tutte le svolte che
possono essere effettuate da questa corsia.
La direzione consigliata che un conducente deve prendere in una corsia è contrassegnata utilizzando il campo recommended.

Esempio di indicazione delle corsie in cui posizionarsi
Il seguente snippet illustra la rappresentazione dei dati delle corsie visualizzate nello screenshot precedente.
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
Immagini di indicazione delle corsie in cui posizionarsi
L'SDK Navigation supporta la generazione di immagini delle corsie per ogni passaggio di navigazione, come indicato da GMSNavigationStepInfo. Queste icone sono conformi alle indicazioni relative alle dimensioni delle immagini di CarPlay
guidance.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
Creare icone per le manovre
![]()
L'GMSNavigationManeuver
enum definisce ogni possibile manovra che potrebbe verificarsi durante la navigazione e puoi
ottenere la manovra per un determinato passaggio dalla proprietà maneuver di
GMSNavigationStepInfo.
Devi creare le icone delle manovre e associarle alle manovre correlate.
Per alcune manovre, puoi configurare una mappatura uno a uno a un'icona, ad esempio GMSNavigationManeuverDestinationLeft e GMSNavigationManeuverDestinationRight. Tuttavia, poiché alcune manovre condividono caratteristiche con altre manovre, potresti voler mappare più manovre a una singola icona. Ad esempio, GMSNavigationManeuverTurnLeft e GMSNavigationManeuverOnRampLeft potrebbero essere mappate entrambe all'icona di svolta a sinistra.
Alcune manovre contengono un'etichetta aggiuntiva "In senso orario" o "In senso antiorario", che l'SDK determina in base al lato di guida di un paese. Ad esempio, nei paesi in cui si guida sul lato sinistro della strada, i conducenti prendono una rotatoria o fanno un'inversione a U in senso orario, mentre i paesi con guida a destra vanno in senso antiorario. L'SDK Navigation rileva se una manovra si verifica nel traffico a sinistra o a destra e restituisce la manovra appropriata. Pertanto, l'icona della manovra potrebbe essere diversa per una manovra in senso orario rispetto a una in senso antiorario.
Espandi per visualizzare le icone di esempio per diverse manovre
| Icona di esempio | Manovre passo passo |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_RAMP_U_TURN_CLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_U_TURN_CLOCKWISE
|
![]() |
ROUNDABOUT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_CLOCKWISE
|
![]() |
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_EXIT_CLOCKWISE
|
![]() |
MERGE_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
Utilizzare le icone generate
L'SDK Navigation supporta la generazione di icone di manovra per un determinato GMSNavigationStepInfo. Queste icone sono conformi alle indicazioni relative alle dimensioni delle immagini di CarPlay
guidance.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































