Configurare le interruzioni in tempo reale
Le interruzioni in tempo reale sono una raccolta di funzionalità che avvisano gli utenti delle interruzioni lungo il percorso e consentono loro di segnalare e verificare le interruzioni che incontrano. Alcuni esempi di interruzioni sono incidenti stradali, ingorghi, presenza di polizia e autovelox, lavori in corso, chiusure di corsie e determinate condizioni meteorologiche. Questa pagina illustra le funzionalità relative alle interruzioni in tempo reale e le relative opzioni di configurazione, incluse le considerazioni per le app che utilizzano UI di navigazione personalizzate.
Funzionalità relative alle interruzioni in tempo reale
L'SDK Navigation include le seguenti funzionalità relative alle interruzioni in tempo reale nell'ambito dell'esperienza di navigazione di base:- Etichette interattive delle interruzioni lungo i percorsi.
- Avvisi automatici sulle interruzioni con voto durante la navigazione attiva.
- Segnalazioni di interruzioni durante la navigazione attiva.
Queste funzionalità sono configurabili e attive per impostazione predefinita. Le sezioni seguenti forniscono ulteriori informazioni sulle funzionalità e sulle opzioni di configurazione disponibili.
Popup interattivi sulle interruzioni lungo i percorsi
Quando un'app mostra un itinerario, in una panoramica dell'itinerario o durante la navigazione attiva, eventuali interruzioni attuali vengono visualizzate come callout lungo il percorso. I callout includono un'icona che indica il tipo di interruzione.
Puoi controllare la visualizzazione dei callout relativi alle interruzioni lungo i percorsi utilizzando shouldDisplayPrompts
, che controlla anche la visualizzazione di avvisi automatici quando un utente si avvicina a un'interruzione.
mapView.navigator.shouldDisplayPrompts = true
Mostrare i dettagli dell'interruzione quando un utente tocca un callout
Gli utenti possono toccare un callout per visualizzare una scheda informativa con ulteriori informazioni sull'interruzione, tra cui il tipo di interruzione, l'ora dell'ultima segnalazione e, in alcuni casi, un'opzione per esprimere il proprio parere sul fatto che l'interruzione sia ancora presente. Esistono due diversi tipi di schede informative che possono essere visualizzate, a seconda che l'utente stia navigando attivamente, e le opzioni di configurazione variano per ogni tipo.
Schede informative con callout nelle panoramiche dei percorsi, prima di avviare la navigazione attiva
Quando un utente tocca un callout in una panoramica del percorso, prima di avviare la navigazione attiva, viene visualizzata una scheda informativa con ulteriori informazioni sull'interruzione.
Puoi controllare la possibilità per gli utenti di toccare i callout relativi alle interruzioni nelle panoramiche dei percorsi per visualizzare altre informazioni utilizzando showsIncidentCards
.
mapView.settings.showsIncidentCards = true
Schede informative con callout durante la navigazione attiva
Quando viene visualizzato un callout relativo a una interruzione lungo un percorso durante la navigazione attiva, gli utenti possono toccarlo per visualizzare una scheda informativa con ulteriori informazioni sull'interruzione, tra cui il tipo di interruzione e l'ora dell'ultima segnalazione, nonché i pulsanti per votare se l'interruzione è ancora presente. I voti inviati dagli utenti vengono elaborati da Google e possono essere visualizzati sulla mappa per altri utenti di Google Maps e dell'SDK di navigazione, nonché utilizzati per determinare se continuare a mostrare l'interruzione.
Puoi controllare la visualizzazione e la possibilità di toccare i callout relativi alle interruzioni durante la navigazione attiva utilizzando
shouldDisplayPrompts
, che controlla anche la
visualizzazione dei callout lungo i percorsi e la
visualizzazione di avvisi automatici quando un utente si avvicina a un'interruzione.
mapView.navigator.shouldDisplayPrompts = true
Avvisi automatici sulle interruzioni con possibilità di voto durante la navigazione attiva
Durante la navigazione attiva, quando un utente si avvicina a un'interruzione lungo un percorso, viene visualizzata una richiesta con informazioni sull'interruzione e pulsanti per votare se l'interruzione è ancora presente. I voti inviati dagli utenti vengono elaborati da Google e possono essere visualizzati sulla mappa per altri utenti dell'SDK di Google Maps e Navigation, nonché utilizzati per determinare se continuare a mostrare l'interruzione.
Puoi configurare la visualizzazione dei prompt di avviso durante la navigazione attiva utilizzando
shouldDisplayPrompts
, che controlla anche la visualizzazione
dei callout lungo i percorsi.
mapView.navigator.shouldDisplayPrompts = true
Segnalazioni di interruzioni durante la navigazione attiva
Durante la modalità di navigazione attiva, nell'interfaccia utente di navigazione viene visualizzato un pulsante che consente agli utenti di segnalare nuove interruzione lungo il percorso. Quando un utente tocca il pulsante, viene visualizzato un menu con i tipi di interruzioni disponibili da segnalare. Le segnalazioni inviate dagli utenti vengono elaborate da Google e potrebbero essere visualizzate sulla mappa per altri utenti di Google Maps e dell'SDK Navigation.
Puoi configurare la visibilità del pulsante per i report durante la navigazione attiva utilizzando
navigationReportIncidentButtonEnabled
.
// Enables the incident reporting FAB to show in situations where incident // reporting is possible. mapView.settings.navigationReportIncidentButtonEnabled = true
Utilizzare interfacce utente di navigazione personalizzate
Se l'implementazione dell'SDK Navigation include elementi dell'interfaccia utente personalizzati, devi prendere in considerazione gli elementi relativi alle interruzioni in tempo reale per evitare conflitti.
Posizionamento del pulsante Report
Per impostazione predefinita, il pulsante per la segnalazione delle interruzioni si trova nell'angolo in basso a destra della mappa, sul lato destro per le lingue con scrittura da sinistra a destra e sul lato sinistro per le lingue con scrittura da destra a sinistra. Se devi spostare il pulsante dei report per fare spazio a elementi dell'interfaccia utente personalizzati, utilizza unbottomTrailingButtonsLayoutGuide
.
Swift
// Create a new layout guide let topRightLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current reporting button is of fixed height topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide // Create an alternate layout guide to use when the header and the footer are not full width let topRightAlternateLayoutGuide = UILayoutGuide() self.view.addLayoutGuide(topRightAlternateLayoutGuide) // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide
Objective-C
// Create a new layout guide UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide; // Create an alternate layout guide to use when the header and the footer are not full width UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init]; [self.view addLayoutGuide:topRightAlternateLayoutGuide]; // Activate constraints using fixed constants here as an example // assuming the current RTD button is of fixed height [[topRightAlternateLayoutGuide.topAnchor constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor constant:50] setActive:YES]; [[topRightAlternateLayoutGuide.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor constant:-14] setActive:YES]; // Assign the layout guide _mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;
API Prompt Visibility (sperimentale)
L'API Prompt Visibility ti aiuta a evitare conflitti tra gli elementi dell'interfaccia utente generati dall'SDK Navigation e i tuoi elementi dell'interfaccia utente personalizzati aggiungendo un ascoltatore per ricevere un callback prima che un elemento dell'interfaccia utente dell'SDK Navigation stia per essere visualizzato e non appena l'elemento viene rimosso. Puoi ricevere callback per gli elementi relativi alle interruzioni in tempo reale, tra cui schede informative, prompt e il menu per i report sulle interruzioni, nonché per altre notifiche generate dall'SDK Navigation.Swift
// Additional methods added to GMSNavigatorListener ... func navigatorWillPresentPrompt(_ navigator: GMSNavigator) { // Hide any sort of custom UI element. } func navigatorDidDismissPrompt(_ navigator: GMSNavigator) { // Show any sort of custom UI element. } ...
Objective-C
// Additional methods added to GMSNavigatorListener ... - (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator { // Hide any sort of custom UI element. } - (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator { // Show any sort of custom UI element. } ...