Domande frequenti
Dettagli del prodotto
- Come deve essere mostrata la notifica relativa ai Termini di servizio dell'SDK Navigation?
- Quali lingue sono supportate dalla guida vocale?
- La rotta viene mantenuta quando il conducente esce dalla modalità di navigazione?
- I polilinee sono disponibili quando si avvia o si modifica un percorso?
- Gli utenti dell'app devono avere installato Google Maps mobile?
- L'SDK Navigation può identificare i parcheggi vicino a ristoranti e altre destinazioni?
- L'SDK Navigation mostra la direzione del traffico nelle corsie quando ci si avvicina a un punto di svolta?
Problemi
- In Xcode 12, le app non vengono compilate correttamente per il simulatore. Come faccio a risolvere il problema?
GMSMapView
non si carica.
Rete
Dati
- Posso recuperare tutte le fermate/destinazioni di un viaggio prima di iniziare il percorso?
- Le indicazioni stradali passo passo sono disponibili all'inizio di un percorso?
- In che modo l'orario di arrivo stimato (ETA) viene comunicato agli utenti dell'app?
- L'elemento
RoadSnappedLocationProvider
può essere utilizzato per ottenere la posizione attuale del conducente se la navigazione non è in primo piano? - L'SDK Navigation supporta il geofencing?
- Posso disattivare le notifiche quando l'app Navigazione è in background?
Personalizzazione dell'interfaccia utente
- Posso codificare a colori l'opzione migliore per il percorso?
- L'SDK Navigation può mostrare l'orario di arrivo stimato per la destinazione finale?
- Come faccio a nascondere gli aggiornamenti sull'orario di arrivo stimato?
- Quali personalizzazioni dell'interfaccia utente sono disponibili per le schede di intestazione e piè di pagina?
Routing
- Posso fornire un percorso specifico a un conducente o rimuovere i percorsi alternativi?
- Posso mostrare al conducente un'etichetta diversa per la destinazione rispetto alla posizione predefinita della destinazione?
- Posso utilizzare l'SDK Navigation per monitorare le deviazioni da un percorso definito?
- Il conducente può uscire dalla navigazione senza completare il percorso?
Simulatore
Workflows
Servizi di mobilità
- In che modo l'utilizzo dell'SDK Navigation è diverso per i clienti di Mobility Services?
- Come faccio a sapere se sono un cliente di Mobility Services?
- Come viene fatturato l'SDK Navigation per i clienti di Mobility Services?
- Quali API SDK Navigation devono essere utilizzate solo dai clienti di Mobility Services?
- Se sono cliente di Mobility Services, posso utilizzare anche un'implementazione dell'SDK di navigazione non Mobility Services?
Dettagli del prodotto
- La tua app deve implementare una finestra di dialogo con la notifica dei Termini di servizio dell'SDK di navigazione che ogni conducente deve accettare. Questa finestra di dialogo offre al conducente l'opportunità di accettare i Termini di servizio. Un file di testo dei termini è fornito con l'SDK Navigation.
- In Android, utilizza 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 Navigation. 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ì. In Android, una volta avviato,
LocationListener
continua a eseguire in background. L'app continua a scattare foto della strada e mantiene la rotta.In iOS, per continuare a ricevere aggiornamenti sulla posizione e sull'orientamento in background, implementa l'aggancio alla strada e imposta
allowsBackgroundLocationUpdates
suYES
. -
Sì. Quando un percorso viene creato o modificato,
RouteChangeListener
fornisce polilinee. - No, l'SDK Navigation non richiede l'installazione di Google Maps Mobile sul dispositivo.
- No, al momento l'SDK Navigation non fornisce questa funzionalità.
- Sì. La direzione del traffico è disponibile e visualizzata per impostazione predefinita.
Problemi
- In Xcode 12, le app non vengono compilate 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 iOS".Per ulteriori informazioni, consulta il seguente thread di StackOverflow.
- GMSMapView non si carica.
-
Se GMSMapView non si carica:
- Verifica che NavSDK sia abilitato in Cloud Console.
- Se l'SDK Nav è installato, ma il tuo progetto non utilizza le API SDK Nav, rimuovilo dal file binario.
Rete
- In che modo l'SDK Navigation gestisce la scarsa connettività?
- L'SDK Navigation esegue la pre-cache del percorso per ogni tragitto. Le informazioni memorizzate nella cache includono informazioni sui percorsi per 15-20 minuti e alternative al percorso nel caso in cui il conducente scostasse dal percorso. L'SDK Navigation approssima la posizione utilizzando il GPS e i sensori del dispositivo.
- È disponibile una modalità offline?
- No, al momento l'SDK di navigazione non offre una modalità offline. Tuttavia, l'SDK fornisce informazioni pre-memorizzate nella cache per un viaggio.
Dati
- Posso recuperare tutte le fermate/destinazioni di un viaggio prima di avviare il percorso?
-
Sì. In Android, per recuperare le indicazioni stradali per un percorso, chiama
Navigator.getRouteSegments()
.Su iOS, chiama
GMSNavigator.routeLegs(read)
. - Le indicazioni stradali passo passo sono disponibili all'inizio di un percorso?
- Sì. L'SDK Navigation fornisce un elenco di segmenti di percorso. Inoltre, il conducente può scorrere la scheda delle indicazioni stradali nell'intestazione per vedere ogni manovra.
- Come viene comunicata l'ora di arrivo stimata agli utenti dell'app?
-
In Android, segui questi passaggi per fornire informazioni sull'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 accade attualmente per l'orario di arrivo stimato del conducente.
Su iOS, segui questi passaggi per fornire informazioni sull'orario di arrivo stimato agli utenti dell'app:
- Recupera le tratte del percorso utilizzando
Navigator.getRouteSegments()
. - Chiama
GMSNavigator.timeToNextDestination
per ogni tratta del viaggio. - Inoltra le informazioni sull'ora all'applicazione client come accade attualmente per l'orario di arrivo stimato del conducente.
- Recupera il tempo e la distanza per tutti i waypoint utilizzando
-
L'evento
RoadSnappedLocationProvider
può essere utilizzato per ottenere la posizione bloccata corrente del conducente se la navigazione non è in primo piano? -
Sì. In Android,
RoadSnappedLocationProvider
viene eseguito in background per impostazione predefinita.In iOS, per mantenere la navigazione in esecuzione in background, implementa l'ascoltatore per
GMSRoadSnappedLocationProviderListener
e imposta la proprietàallowsBackgroundLocationUpdates
suTRUE
. - L'SDK Navigation supporta il geofencing?
-
No. Nel contesto della navigazione,
remainingTimeOrdistanceChangeListener
ha un vantaggio rispetto a un semplice recinto virtuale. Il recinto virtuale potrebbe non tenere conto della geometria stradale e potrebbe non essere centrato sul punto esatto verso cui il conducente sta guidando.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 dalla destinazione cambia di 100 m. Man mano che la distanza diminuisce, puoi aggiornare questa soglia impostando un valore inferiore e ricevere chiamate di ritorno più frequenti. Dopodiché controlla la distanza rimanente per determinare se sei abbastanza vicino alla stazione di ritiro/consegna.
In iOS, implementa l'ascoltatore
GMSNavigatorListener.didUpdateRemainingDistance
per gestire la distanza tra le notifiche. - Posso disattivare le notifiche quando l'app Navigazione è in background?
-
Sì. Su Android, utilizza
Navigator.setHeadsUpNotificationEnabled
per controllare le notifiche. Questo metodo ha un argomento booleano.FALSE
disattiva le notifiche;TRUE
attiva le notifiche.In iOS, disattiva la notifica in background per le posizioni acquisite con fotocamera stradale impostando
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
su NO.Per disattivare l'elaborazione in background per altre notifiche sulla posizione, chiama
GMSNavigator.sendsBackgroundNotifications(NO)
.
Personalizzazione dell'interfaccia utente
- Posso assegnare un codice colore all'opzione di percorso migliore?
- No. Al momento non è supportata la codifica a colori di un'opzione di percorso specifica.
- L'SDK Navigation 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 corrente utilizzando
NavigationFragment.setEtaCardEnabled(false)
. - Mostra l'orario di arrivo stimato alla destinazione finale.
In iOS, utilizza quanto segue:
- Chiama il numero
GMSNavigator.routeLegs(read)
. - Per l'ultimo tratto, chiama
GMSNavigator.timeToNextDestination
. - Nascondi l'orario di arrivo stimato del waypoint corrente utilizzando
MSMapView.settings.navigationFooterEnabled=NO
su FALSE. - Mostra l'orario di arrivo stimato alla destinazione finale.
- Recupera il tempo e la distanza per tutti i waypoint utilizzando
- Come faccio a nascondere gli aggiornamenti sull'orario di arrivo stimato?
-
Puoi disattivare le schede di orario di arrivo stimato con i seguenti metodi:
- Su Android, usa
navigationView.setEtaCardEnabled(false)
. - Su iOS, usa
GMSMapView.settings.navigationFooterEnabled=NO
.
- Su Android, usa
-
In Android, utilizzi
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
.Su 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 forniti più percorsi e quello più veloce ha la priorità. Puoi modificare l'itinerario predefinito aggiungendo preferenze, ad esempio "Evita autostrade e pedaggi", alla tua richiesta. L'aggiunta di waypoint influisce anche 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
Marker
con un titolo personalizzato per la destinazione e la latitudine/longitudine. L'SDK Navigation mostra il titolo personalizzato e le coordinate suNavigationMap
.In iOS, crei e mostri un
GMSMarker
per la destinazione. - Posso utilizzare l'SDK Navigation per monitorare le deviazioni da un percorso definito?
-
Sì. Su Android, usa
Navigator.setRouteChangedListener
per ricevere notifiche quando un itinerario cambia o viene consigliato un nuovo itinerario:- Registra un ascoltatore che controlla la posizione del dispositivo lungo il percorso
utilizzando il metodo
Navigator.setRouteChangedListener
. - Aggiungi il codice al gestore dell'evento di callback
onRouteChanged
:- Invia un messaggio all'utente dell'app con informazioni aggiornate sull'orario di arrivo stimato e sulla distanza.
- Monitorare la posizione del dispositivo.
- [Facoltativo] Aggiungi altre funzionalità richieste dalla tua app per gestire quando il conducente non è sul percorso prescritto.
In iOS, utilizza
GMSNavigator
e i relativi ascoltatori per ricevere notifiche quando un itinerario cambia o viene consigliato un nuovo itinerario:- Nel controller di visualizzazione della mappa, implementa il protocollo
GMSNavigatorListener
e il protocolloGMSRoadSnappedLocationProviderListener
. - Implementa
GMSNavigatorListener.navigatorDidChangeRoute
. - Accedi al nuovo percorso utilizzando le proprietà
routeLegs
ecurrentRouteLeg
diGMSNavigator
.
- Registra un ascoltatore che controlla la posizione del dispositivo lungo il percorso
utilizzando il metodo
-
Sì. In Android, chiama il metodo
Navigator.stopGuidance()
per interrompere la navigazione.Su iOS, chiama
GMSNavigator.clearDestinations
.
Simulatore
- Il simulatore supporta le modifiche al percorso?
-
Sì. Su Android, chiama
simulateLocationsAlongNewRoute
per simulare un viaggio che include una modifica del percorso. Il metodosimulateLocationsAlongExistingRoute
ignora le modifiche al percorso esistente.Su iOS, utilizza
GMSLocationSimulator.simulateAlongNewRouteToDestinations
per simulare un viaggio 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à che contiene un frammento di navigazione?
-
La notifica di navigazione rimane visibile durante la navigazione, quando l'attività è chiusa. Quando il veicolo arriva alla destinazione, la navigazione si interrompe e la notifica scompare.
Per gestire i clic sulla notifica, utilizza
Navigator.startGuidance(intent resumeIntent)
. L'eventoresume intent
viene attivato quando l'utente dell'app fa clic sulla notifica. In genere,Navigator.startguidance(getIntent())
viene chiamato dalla sezione Attività principale, che richiama l'attività quando l'utente dell'app fa clic sulla notifica.
Servizi di mobilità
I servizi di mobilità di Google Maps Platform offrono una raccolta di API e SDK per supportare le esigenze delle aziende di trasporto e logistica. Per i clienti di Mobility Services, l'SDK di navigazione viene in genere utilizzato in combinazione con servizi correlati per l'ottimizzazione dei percorsi, l'invio, il monitoraggio delle attività, l'analisi del parco veicoli e altro ancora. Inoltre, l'SDK Navigation viene fatturato in modo diverso per i clienti di Mobility Services. Per saperne di più, consulta la documentazione di Mobility Services.
I prodotti per la mobilità sono attualmente disponibili solo per alcuni clienti. Per ulteriori informazioni, contatta il tuo rappresentante di vendita.
ReportBillableEvent
nel codice. Solo i clienti di Mobility Services devono chiamare il metodo ReportBillableEvent
.
Nell'SDK Navigation sono presenti diverse API destinate esclusivamente all'utilizzo da parte dei clienti di Mobility Services, a cui Google fattura su base transazionale. Se non sei un cliente di Mobility Services, i seguenti metodi non sono disponibili:
Sì, i clienti di Mobility Services possono utilizzare sia le implementazioni di Mobility Services sia quelle non di Mobility Services dell'SDK di navigazione. Tuttavia, puoi utilizzare un solo tipo di implementazione in un'app alla volta. Devi anche creare un nuovo progetto Google Cloud, un account di fatturazione e una chiave API separati da quelli che utilizzi con l'implementazione di Mobility Services. Per ulteriori informazioni, consulta la panoramica della configurazione dell'SDK Navigation.
Per ulteriori informazioni sull'utilizzo di un'implementazione dell'SDK Navigation non per i servizi di mobilità, inclusa la migrazione di un'app da un tipo di implementazione all'altro, contatta il rappresentante del tuo Account Google.
Nota: se al momento non sei cliente di Mobility Services e vuoi saperne di più sulla raccolta di API e SDK di Mobility Services, contatta il team di vendita di Google Maps Platform.