Domande frequenti

Dettagli del prodotto

Problemi

Rete

Dati

Personalizzazione della UI

Routing

Simulatore

Workflows

Servizi di mobilità

Dettagli del prodotto

La tua app deve implementare una finestra di dialogo con l'avviso relativo ai Termini di servizio dell'SDK Navigation che ogni autista deve accettare. Questa finestra di dialogo offre al conducente l'opportunità di accettare i Termini di servizio. Un file di testo dei termini viene 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 disponibili automaticamente 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 essere eseguito in background. La tua app continua a posizionare l'auto sulla strada e a mantenere la direzione.

In iOS, per continuare a ricevere aggiornamenti sulla posizione e sulla direzione in background, implementa lo snapping stradale e imposta allowsBackgroundLocationUpdates su YES.

Sì. Quando una route viene creata o modificata, RouteChangeListener fornisce polilinee.

No, l'SDK Navigation non richiede l'installazione di Google Maps Mobile sul dispositivo.
No, l'SDK Navigation non fornisce questa funzionalità al momento.
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 a Excluded Architectures solo per le build "iOS Simulator".

Per maggiori informazioni, consulta il seguente thread di Stack Overflow.

GMSMapView non viene caricato.

Se GMSMapView non viene caricato:

  • 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 connettività scarsa?
L'SDK Navigation memorizza nella cache in anticipo il percorso per ogni viaggio. Le informazioni memorizzate nella cache includono le informazioni di routing per 15-20 minuti e gli itinerari alternativi nel caso in cui l'autista si discosti dall'itinerario. L'SDK Navigation approssima la posizione utilizzando il GPS e i sensori del dispositivo.
È disponibile una modalità offline?
No, al momento l'SDK Navigation 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 iniziare il percorso?

Sì. In Android, per recuperare le indicazioni stradali per un percorso, chiama Navigator.getRouteSegments().

Su iOS, chiama il numero GMSNavigator.routeLegs(read).

Le indicazioni stradali passo passo sono disponibili all'inizio di un percorso?
Sì. Navigation SDK fornisce un elenco di segmenti di percorso. Inoltre, l'autista può scorrere la scheda delle indicazioni stradali nell'intestazione per visualizzare ogni manovra.
Come viene comunicato l'ETA agli utenti dell'app?

In Android, segui questi passaggi per fornire informazioni sull'ETA agli utenti dell'app:

  1. Recupera il tempo e la distanza per tutti i waypoint utilizzando Navigator.getTimeAndDistanceList().
  2. Inoltra queste informazioni all'applicazione client come fai per l'orario di arrivo stimato dell'autista.

In iOS, segui questi passaggi per fornire informazioni sull'orario di arrivo stimato agli utenti dell'app:

  1. Recupera le tappe del viaggio utilizzando Navigator.getRouteSegments().
  2. Chiama GMSNavigator.timeToNextDestination per ogni tratta del viaggio.
  3. Inoltra le informazioni sull'ora all'applicazione client come fai per l'ETA dell'autista.
RoadSnappedLocationProvider può essere utilizzato per ottenere la posizione agganciata attuale 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 il listener per GMSRoadSnappedLocationProviderListener e imposta la proprietà allowsBackgroundLocationUpdates su TRUE.

L'SDK Navigation supporta il geofencing?

No. Nel contesto della navigazione, remainingTimeOrdistanceChangeListener ha un vantaggio rispetto a un 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 navigando.

Puoi approssimare questa funzionalità utilizzando remainingTimeOrdistanceChangeListener.

  1. Imposta la soglia per determinare la frequenza dei callback.
  2. Controlla la distanza rimanente dalla destinazione.

Ad esempio, se imposti la soglia su 100 metri, ricevi una richiamata quando la distanza dalla destinazione cambia di 100 metri. Man mano che la distanza diminuisce, puoi aggiornare questa soglia a un valore più piccolo e ricevere callback più frequenti. Dopodiché, controlla la distanza rimanente per determinare se ti trovi abbastanza vicino al luogo di ritiro/consegna.

In iOS, implementa il listener 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 allineate alla strada impostando GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates su NO.

Per disattivare l'elaborazione in background per altre notifiche relative alla posizione, chiama GMSNavigator.sendsBackgroundNotifications(NO).

Personalizzazione della UI

Posso assegnare un codice colore all'opzione di percorso migliore?
No. Al momento, la codifica a colori di un'opzione di percorso specifica non è supportata.
L'SDK Navigation può mostrare l'orario di arrivo stimato per la destinazione finale?

Sì. In Android, utilizza i seguenti metodi:

  1. Recupera il tempo e la distanza per tutti i waypoint utilizzando Navigator.getTimeAndDistanceList().
  2. Nascondi l'orario di arrivo stimato della tappa attuale utilizzando NavigationFragment.setEtaCardEnabled(false).
  3. Visualizza l'orario di arrivo stimato della destinazione finale.

In iOS, utilizza quanto segue:

  1. Chiama il numero GMSNavigator.routeLegs(read).
  2. Nell'ultima tappa, chiama GMSNavigator.timeToNextDestination.
  3. Nascondi l'orario di arrivo stimato del waypoint attuale impostando MSMapView.settings.navigationFooterEnabled=NO su FALSE.
  4. Visualizza l'orario di arrivo stimato della destinazione finale.
Come faccio a nascondere gli aggiornamenti dell'orario di arrivo stimato?

Puoi disattivare le schede con l'ETA utilizzando i seguenti metodi:

  • Su Android, utilizza navigationView.setEtaCardEnabled(false).
  • In iOS, utilizza GMSMapView.settings.navigationFooterEnabled=NO.
Quali personalizzazioni della UI sono disponibili per le schede di intestazione e piè di pagina?

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 membro setHeaderEnabled e setFooterEnabled di NavigationFragment.

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 e navigationHeaderEnabled di GMSUISettings.

Routing

Posso fornire un percorso specifico a un autista o rimuovere percorsi alternativi?
No. Per impostazione predefinita, vengono forniti più percorsi e il percorso più veloce ha la priorità. Puoi influire sull'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 su NavigationMap.

In iOS, crei e visualizzi un GMSMarker per la destinazione.

Posso utilizzare l'SDK Navigation per monitorare le deviazioni da un percorso definito?

Sì. Su Android, utilizza Navigator.setRouteChangedListener per ricevere notifiche quando un percorso cambia o viene consigliato un nuovo percorso:

  1. Registra un listener che controlla la posizione del dispositivo lungo il percorso utilizzando il metodo Navigator.setRouteChangedListener.
  2. Aggiungi il codice al gestore eventi di callback, onRouteChanged:
    • Invia un messaggio all'utente dell'app con le informazioni aggiornate su orario di arrivo stimato e distanza.
    • Tracciare la posizione del dispositivo.
    • [facoltativo] Aggiungi altre funzionalità richieste dalla tua app per gestire quando l'autista non segue l'itinerario prescritto.

In iOS, utilizza GMSNavigator e i relativi listener per ricevere notifiche quando un percorso cambia o viene consigliato un nuovo percorso:

  1. Nel controller di visualizzazione della mappa, implementa il protocollo GMSNavigatorListener e il protocollo GMSRoadSnappedLocationProviderListener.
  2. Implementa GMSNavigatorListener.navigatorDidChangeRoute.
  3. Accedi al nuovo percorso utilizzando le proprietà routeLegs e currentRouteLeg di GMSNavigator.
Il conducente può uscire dalla navigazione senza completare il percorso?

Sì. In Android, chiama il metodo Navigator.stopGuidance() per interrompere la navigazione.

Su iOS, chiama il numero GMSNavigator.clearDestinations.

Simulatore

Il simulatore supporta le modifiche dell'itinerario?

Sì. In Android, chiama simulateLocationsAlongNewRoute per simulare un viaggio che include un cambio di percorso. Il metodo simulateLocationsAlongExistingRoute ignora le modifiche all'itinerario esistente.

In iOS, utilizza GMSLocationSimulator.simulateAlongNewRouteToDestinations per simulare un viaggio che include una modifica del percorso. Se non prevedi modifiche all'itinerario, puoi utilizzare GMSLocationSimulator.simulateLocationsAlongExistingRoute o GMSLocationSimulator.simulateAlongNewRouteToDestinations.

Workflows

Come faccio a chiudere 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 a destinazione, la navigazione si interrompe e la notifica scompare.

Per gestire i clic sulla notifica, utilizza Navigator.startGuidance(intent resumeIntent). L'resume intent viene attivato 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.

Servizi di mobilità

In che modo l'utilizzo dell'SDK Navigation è diverso per i clienti di Mobility Services?

Google Maps Platform Mobility Services offre una raccolta di API e SDK per soddisfare le esigenze delle aziende di trasporto e logistica. Per i clienti di Mobility Services, l'SDK Navigation viene in genere utilizzato insieme a servizi correlati per l'ottimizzazione dei percorsi, la pianificazione, il monitoraggio delle attività, l'analisi della flotta e altro ancora. L'SDK Navigation viene anche 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 disponibili solo per clienti selezionati. Contatta il tuo rappresentante di vendita per saperne di più.

Come faccio a sapere se sono un cliente di Mobility Services?
Se non sai se stai implementando l'SDK Navigation come cliente di Mobility Services, cerca una chiamata ReportBillableEvent nel tuo codice. Solo i clienti di Mobility Services devono chiamare il metodo ReportBillableEvent.

Come viene fatturato l'SDK Navigation per i clienti di Mobility Services?
Per i clienti dei servizi di mobilità, la fatturazione e i prezzi dell'SDK Navigation dipendono dal contratto di servizio stipulato con Google Maps Platform. Per informazioni su come verificare che l'implementazione di Mobility Services venga fatturata correttamente, consulta Convalida della fatturazione. Per ulteriori informazioni sulla fatturazione di Mobility Services, contatta il tuo rappresentante di vendita.

Quali API dell'SDK Navigation devono essere utilizzate solo dai clienti di Mobility Services?

Nell'SDK Navigation sono presenti diverse API destinate esclusivamente all'utilizzo da parte dei clienti di Mobility Services, a cui Google addebita i costi in base alle transazioni. Se non sei un cliente di Mobility Services, i seguenti metodi non sono operativi:

Se sono un cliente di Mobility Services, posso utilizzare anche un'implementazione non Mobility Services dell'SDK Navigation?

Sì, i clienti di Mobility Services possono utilizzare sia le implementazioni di Mobility Services sia quelle non Mobility Services dell'SDK Navigation. 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 non Mobility Services dell'SDK Navigation, inclusa la migrazione di un'app da un tipo di implementazione all'altro, contatta il tuo rappresentante dell'account Google.

Nota: se non sei un cliente di Mobility Services e ti interessa saperne di più sulla raccolta di API e SDK di Mobility Services, contatta il team di vendita di Google Maps Platform.