Domande frequenti
Informazioni sul prodotto
- Come dovrebbe essere mostrata la notifica relativa ai Termini di servizio dell'SDK di navigazione?
- Quali lingue sono supportate dalla guida vocale?
- Il cuscinetto viene mantenuto quando il conducente esce dalla modalità di navigazione?
- Sono disponibili le polilinee quando si avvia o si modifica un percorso?
- Gli utenti dell'app devono avere installato Google Maps per dispositivi mobili?
- L'SDK di navigazione può identificare i parcheggi vicino a ristoranti e altre destinazioni?
- L'SDK di navigazione mostra la direzione del traffico nelle corsie quando ci si avvicina a un punto di svolta?
Problemi
Rete
- In che modo l'SDK di navigazione gestisce la scarsa connettività?
- È disponibile una modalità offline?
Dati
- Posso recuperare tutte le fermate/destinazioni di un viaggio prima di iniziare il percorso?
- Sono disponibili indicazioni stradali passo passo all'inizio di un percorso?
- Come viene comunicata l'ora di arrivo prevista agli utenti dell'app?
- È possibile utilizzare
RoadSnappedLocationProvider
per ottenere la posizione agganciata attuale del conducente se la navigazione non è in primo piano? - L'SDK di navigazione supporta il geofencing?
- Posso disattivare le notifiche quando l'app di navigazione è in background?
Personalizzazione dell'interfaccia utente
- Posso assegnare un codice colore all'opzione migliore per il percorso?
- L'SDK di navigazione può mostrare l'orario di arrivo stimato per la destinazione finale?
- Come faccio a nascondere gli aggiornamenti dell'orario di arrivo stimato?
- Quali personalizzazioni dell'interfaccia utente sono disponibili per le schede intestazione e piè di pagina?
Routing
- Posso fornire un percorso specifico a un conducente o rimuovere percorsi alternativi?
- Posso mostrare al conducente un'etichetta diversa per la destinazione rispetto a quella predefinita?
- Posso utilizzare l'SDK di navigazione per monitorare le deviazioni da un percorso definito?
- Il conducente può uscire dalla navigazione senza completare il percorso?
Simulatore
Workflows
Informazioni sul prodotto
- L'app deve implementare una finestra di dialogo con l'avviso che ogni conducente deve accettare nei Termini di servizio dell'SDK di navigazione. Questa finestra di dialogo offre al conducente la possibilità di accettare i Termini di servizio. Con l'SDK di navigazione viene fornito un file di testo dei termini.
- In Android, usa il metodo
NavigationApi.showTermsAndConditionsDialog
per visualizzare la finestra di dialogo contenente i termini. - In iOS, chiama
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - Tutte le lingue supportate da Google Maps Mobile sono automaticamente disponibili per l'SDK di navigazione. Un dispositivo ha una lingua di sistema predefinita e un'app non può modificare questa impostazione; tuttavia, l'app ha accesso a oltre 70 lingue.
-
Sì, Una volta avviato, in Android
LocationListener
continua a essere eseguito in background. L'app continua a scattare la posizione mantenendo il rilevamento.In iOS, per continuare a ricevere aggiornamenti sulla posizione per la posizione e l'orientamento in background, implementa l'agganciamento della strada e imposta
allowsBackgroundLocationUpdates
suYES
. -
Sì, Quando una route viene creata o modificata,
RouteChangeListener
fornisce le polilinee. - No, l'SDK Navigation non richiede l'installazione di Google Maps Mobile sul dispositivo.
- No, al momento l'SDK di navigazione non offre questa funzionalità.
- Sì. La direzione del traffico è disponibile e visualizzata per impostazione predefinita.
Problemi
- In Xcode 12, le app non vengono create correttamente per il simulatore. Come faccio a risolvere il problema?
-
Per risolvere il problema, apri le impostazioni di compilazione del progetto Xcode e aggiungi
arm64
aExcluded Architectures
solo per le build "Simulatore di iOS".Per ulteriori informazioni, consulta il seguente thread di StackOverflow.
Rete
- In che modo l'SDK Navigation gestisce la scarsa connettività?
- L'SDK di navigazione memorizza nella cache la route per ogni percorso. Le informazioni prememorizzate nella cache includono informazioni di routing per 15-20 minuti e alternative di percorso nel caso in cui il conducente si discosta dal percorso. L'SDK di navigazione calcola la posizione approssimativa utilizzando il GPS e i sensori del dispositivo.
- È disponibile una modalità offline?
- No, al momento l'SDK Navigation non offre una modalità offline. Tuttavia, fornisce informazioni prememorizzate nella cache per un percorso.
Dati
- Posso recuperare tutte le fermate/destinazioni di un viaggio prima di iniziare il percorso?
-
Sì, In Android, per recuperare le indicazioni stradali per un percorso, chiama
Navigator.getRouteSegments()
.In iOS, chiama
GMSNavigator.routeLegs(read)
. - Sono disponibili indicazioni stradali passo passo all'inizio di un percorso?
- Sì. L'SDK di navigazione fornisce un elenco di segmenti del percorso. Inoltre, il conducente può scorrere la scheda delle indicazioni nell'intestazione per visualizzare ogni manovra.
- Come viene comunicato agli utenti dell'app l'orario di arrivo stimato?
-
Su Android, svolgi i seguenti passaggi per fornire informazioni relative all'orario di arrivo stimato agli utenti dell'app:
- Recupera il tempo e la distanza per tutti i waypoint utilizzando
Navigator.getTimeAndDistanceList()
. - Inoltra queste informazioni all'applicazione client come fai attualmente per l'orario di arrivo stimato del conducente.
In iOS, svolgi i seguenti passaggi per fornire informazioni relative all'orario di arrivo stimato agli utenti dell'app:
- Recupera le tappe nel percorso utilizzando
Navigator.getRouteSegments()
. - Chiama
GMSNavigator.timeToNextDestination
per ogni tratta del viaggio. - Inoltra le informazioni sull'orario all'applicazione client come fai attualmente per l'orario di arrivo stimato del conducente.
- Recupera il tempo e la distanza per tutti i waypoint utilizzando
-
È possibile usare
RoadSnappedLocationProvider
per ottenere la posizione agganciata attuale del conducente se la navigazione non è in primo piano? -
Sì, Per impostazione predefinita, in Android
RoadSnappedLocationProvider
viene eseguito in background.In iOS, per mantenere la navigazione in esecuzione in background, implementa il listener per
GMSRoadSnappedLocationProviderListener
e imposta la proprietàallowsBackgroundLocationUpdates
suTRUE
. - L'SDK di navigazione supporta il geofencing?
-
No. Nel contesto della navigazione,
remainingTimeOrdistanceChangeListener
ha un vantaggio rispetto a un recinto virtuale semplice. Il recinto virtuale potrebbe non tenere conto della geometria della strada e potrebbe non essere centrato sul punto esatto a cui si sta muovendo il conducente.Puoi approssimare questa funzionalità utilizzando
remainingTimeOrdistanceChangeListener
.- Imposta la soglia per determinare la frequenza dei callback.
- Controlla la distanza rimanente per raggiungere la destinazione.
Ad esempio, se imposti la soglia su 100 m, ricevi un callback quando la distanza per arrivare alla destinazione cambia di 100 m. Man mano che la distanza diminuisce, puoi aggiornare questa soglia impostandola su un valore inferiore e ricevere callback più frequenti. Quindi, controlla la distanza rimanente per determinare se ti trovi abbastanza vicino al punto di ritiro/consegna.
In iOS, implementa il listener
GMSNavigatorListener.didUpdateRemainingDistance
per gestire la distanza tra le notifiche. - Posso disattivare le notifiche quando l'app di navigazione è in background?
-
Sì, Su Android, usa
Navigator.setHeadsUpNotificationEnabled
per controllare le notifiche. Questo metodo ha un argomento booleano.FALSE
disattiva le notifiche;TRUE
abilita le notifiche.In iOS, disattiva la notifica in background per le posizioni allineate alla strada impostando
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
su NO.Per disabilitare l'elaborazione in background per altre notifiche sulla posizione, chiama il numero
GMSNavigator.sendsBackgroundNotifications(NO)
.
Personalizzazione dell'interfaccia utente
- Posso assegnare un codice colore al percorso migliore?
- No. La codifica con colori di un'opzione di percorso specifica non è al momento supportata.
- L'SDK di navigazione può mostrare l'orario di arrivo stimato per la destinazione finale?
-
Sì, In Android, utilizza i seguenti metodi:
- Recupera il tempo e la distanza per tutti i waypoint utilizzando
Navigator.getTimeAndDistanceList()
. - Nascondi l'orario di arrivo stimato del waypoint attuale utilizzando
NavigationFragment.setEtaCardEnabled(false)
. - Visualizza l'orario di arrivo stimato finale.
In iOS, utilizza quanto segue:
- Chiama
GMSNavigator.routeLegs(read)
. - Con l'ultima tappa, chiama
GMSNavigator.timeToNextDestination
. - Nascondi l'orario di arrivo stimato del waypoint corrente utilizzando
MSMapView.settings.navigationFooterEnabled=NO
su FALSE. - Visualizza l'orario di arrivo stimato finale.
- Recupera il tempo e la distanza per tutti i waypoint utilizzando
- Come faccio a nascondere gli aggiornamenti dell'orario di arrivo stimato?
-
Puoi disattivare le schede degli orari di arrivo stimati con i seguenti metodi:
- In Android, utilizza
navigationView.setEtaCardEnabled(false)
. - In iOS, utilizza
GMSMapView.settings.navigationFooterEnabled=NO
.
- In Android, utilizza
-
In Android, usa
StylingOptions
per impostare lo stile del colore di sfondo. Per nascondere o mostrare l'intestazione e il piè di pagina, utilizza le funzioni membrosetHeaderEnabled
esetFooterEnabled
diNavigationFragment
.In iOS, utilizza
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
per impostare lo stile del colore di sfondo. Per nascondere o mostrare l'intestazione e il piè di pagina, utilizza le proprietànavigationFooterEnabled
enavigationHeaderEnabled
diGMSUISettings
.
Routing
- Posso fornire un percorso specifico a un conducente o rimuovere percorsi alternativi?
- No. Per impostazione predefinita, vengono fornite più route e quella più veloce ha la priorità. Puoi modificare il percorso predefinito aggiungendo preferenze, ad esempio "evita autostrade e strade a pedaggio", alla tua richiesta. Anche l'aggiunta di tappe influisce sul percorso.
- Posso mostrare all'utente dell'app un'etichetta diversa per la destinazione rispetto alla località di destinazione predefinita?
-
Sì, In Android, crea un elemento
Marker
con un titolo personalizzato per la destinazione e latitudine/longitudine. L'SDK di navigazione mostra il titolo personalizzato e le coordinate sulNavigationMap
.In iOS, puoi creare e visualizzare un
GMSMarker
per la destinazione. - Posso utilizzare l'SDK di navigazione per monitorare le deviazioni da un percorso definito?
-
Sì, In Android, usa
Navigator.setRouteChangedListener
per ricevere notifiche quando un percorso cambia o è consigliato un nuovo percorso:- Registra un listener che verifichi la posizione del dispositivo lungo la route utilizzando il metodo
Navigator.setRouteChangedListener
. - Aggiungi codice al gestore di eventi di callback
onRouteChanged
:- Invia un messaggio all'utente dell'app con informazioni aggiornate sull'orario di arrivo stimato e sulla distanza.
- Monitora la posizione del dispositivo.
- [Facoltativo] Aggiungi le altre funzionalità richieste dalla tua app per gestire quando il conducente è fuori dal percorso prescritto.
In iOS, utilizza
GMSNavigator
e i relativi listener per ricevere notifiche quando un percorso cambia o è consigliato un nuovo percorso:- Nel controller di visualizzazione della mappa, implementa i protocolli
GMSNavigatorListener
eGMSRoadSnappedLocationProviderListener
. - Implementa
GMSNavigatorListener.navigatorDidChangeRoute
. - Accedi alla nuova route utilizzando le proprietà
routeLegs
ecurrentRouteLeg
delGMSNavigator
.
- Registra un listener che verifichi la posizione del dispositivo lungo la route utilizzando il metodo
-
Sì, In Android, chiama il metodo
Navigator.stopGuidance()
per interrompere la navigazione.In iOS, chiama
GMSNavigator.clearDestinations
.
Simulatore
- Il simulatore supporta i cambiamenti di percorso?
-
Sì, In Android, chiama
simulateLocationsAlongNewRoute
per simulare un viaggio che include una modifica del percorso. Il metodosimulateLocationsAlongExistingRoute
ignora le modifiche alla route esistente.In iOS, utilizza
GMSLocationSimulator.simulateAlongNewRouteToDestinations
per simulare un percorso che include una modifica del percorso. Se non prevedi modifiche al percorso, puoi utilizzareGMSLocationSimulator.simulateLocationsAlongExistingRoute
oGMSLocationSimulator.simulateAlongNewRouteToDestinations
.
Workflows
- Come faccio a ignorare la notifica dopo aver chiuso un'attività contenente un frammento di navigazione?
-
La notifica di navigazione rimane visibile quando l'attività viene chiusa, durante la navigazione. Quando il veicolo arriva a destinazione, la navigazione si arresta e la notifica scompare.
Per gestire i clic sulla notifica, usa l'
Navigator.startGuidance(intent resumeIntent)
. L'resume intent
si attiva quando l'utente dell'app fa clic sulla notifica. In genere,Navigator.startguidance(getIntent())
viene chiamato dall'attività principale, che richiama l'attività quando l'utente dell'app fa clic sulla notifica.