Seleziona la piattaforma: Android iOS

Configura le interruzioni in tempo reale

Le interruzioni in tempo reale sono un insieme di funzionalità che avvisano gli utenti delle interruzioni lungo il loro percorso e consentono loro di segnalare e verificare le interruzioni che incontrano. Esempi di interruzioni includono incidenti stradali, congestione del traffico, presenza di polizia e autovelox fisso, lavori in corso, corsie chiuse e determinate condizioni meteo. Questa pagina spiega 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à per le interruzioni in tempo reale

L'SDK Navigation include le seguenti funzionalità di interruzione in tempo reale nell'ambito dell'esperienza di navigazione principale:

Queste funzionalità sono configurabili e attive per impostazione predefinita. Le sezioni seguenti forniscono ulteriori informazioni sulle funzionalità e sulle opzioni di configurazione disponibili.

Callout interattivi sulle interruzioni lungo i percorsi

Quando un'app mostra un percorso, nella panoramica del percorso o durante la navigazione attiva, eventuali interruzioni attuali vengono visualizzate come callout lungo il percorso. Quando attivi il livello Traffico, sulla mappa vengono visualizzate anche le interruzioni fuori percorso. I callout includono un'icona che indica il tipo di interruzione.

Callout lungo i percorsi

Puoi controllare la visualizzazione dei callout relativi alle interruzioni lungo i percorsi utilizzando setTrafficPromptsEnabled, che controlla anche la visualizzazione degli avvisi automatici quando un utente si avvicina a un'interruzione.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

Visualizza i dettagli del disservizio quando un utente tocca un callout

Se tocchi un callout di interruzione, si apre una scheda informativa con ulteriori dettagli. Questo vale sia per i callout lungo il percorso sia per quelli fuori percorso, anche se questi ultimi vengono visualizzati solo se il livello del traffico è attivo. La scheda mostra il tipo di interruzione, l'ora dell'ultima segnalazione e, a volte, un'opzione per votare se l'interruzione è ancora presente. Il tipo di scheda informativa e le relative opzioni di configurazione variano a seconda che l'utente sia in navigazione attiva o meno.

Schede informative con callout nelle panoramiche dei percorsi, prima di avviare la navigazione attiva

Prima di avviare la navigazione attiva, gli utenti possono toccare un callout sul percorso o fuori percorso sulla mappa o sulla panoramica del percorso per aprire una scheda informativa. I callout fuori percorso richiedono l'attivazione del livello Traffico. La scheda informativa fornisce ulteriori dettagli sull'interruzione.

Scheda informativa Panoramica

Puoi controllare la possibilità per gli utenti di toccare i callout relativi alle interruzioni nelle panoramiche dei percorsi per visualizzare ulteriori informazioni utilizzando setTrafficIncidentCardsEnabled.

// Using the SupportNavigationFragment
mNavFragment.setTrafficIncidentCardsEnabled(true);

// Using the NavigationView
navigationView.setTrafficIncidentCardsEnabled(true);

Schede informative con callout durante la navigazione attiva

Durante la navigazione attiva, gli utenti possono toccare un callout di interruzione lungo il percorso o fuori percorso per aprire una scheda informativa. La scheda mostra il tipo di interruzione e l'ultima ora segnalata, oltre a pulsanti che consentono agli utenti di votare se l'interruzione è ancora presente.

La votazione è disponibile per le interruzioni lungo il percorso e fuori percorso entro 5 km dall'utente, ad eccezione delle chiusure stradali. Google elabora questi voti per determinare se continuare a mostrare l'interruzione. I voti potrebbero essere visualizzati sulla mappa anche per altri utenti di Google Maps e dell'SDK Navigation.

Scheda informativa sulla navigazione attiva

Puoi controllare la visualizzazione e la possibilità di toccare i callout relativi alle interruzioni durante la navigazione attiva utilizzando setTrafficPromptsEnabled , che controlla anche la visualizzazione dei callout lungo i percorsi e la visualizzazione degli avvisi automatici quando un utente si avvicina a un'interruzione.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

Avvisi automatici di interruzione con votazione durante la navigazione attiva

Durante la navigazione attiva, quando un utente si avvicina a un'interruzione lungo un percorso, viene visualizzato un messaggio 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 di Google Maps e Navigation SDK, nonché utilizzati per determinare se continuare a mostrare l'interruzione.

Scheda informativa sulla navigazione attiva

Puoi configurare la visualizzazione dei prompt di avviso durante la navigazione attiva utilizzando setTrafficPromptsEnabled , che controlla anche la visualizzazione dei callout lungo i percorsi.

// Using the SupportNavigationFragment
mNavFragment.setTrafficPromptsEnabled(true);

// Using the NavigationView
navigationView.setTrafficPromptsEnabled(true);

Segnalazione di problemi durante la navigazione attiva

Durante la modalità di navigazione attiva, nella UI di navigazione viene visualizzato un pulsante che consente agli utenti di segnalare nuove interruzioni lungo il percorso. Quando un utente tocca il pulsante, viene visualizzato un menu con i tipi di interruzione 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 Navigation SDK.

La segnalazione di una chiusura stradale può presentare un itinerario alternativo per aggirare il segmento bloccato, chiedendo all'utente di confermare o rifiutare il cambio percorso. Questa funzionalità è soggetta a disponibilità.

Pulsante Segnalazione Menu Segnalazioni

Mostra o nascondi il pulsante dei report standard

Puoi configurare la visibilità del pulsante di segnalazione standard durante la navigazione attiva utilizzando setReportIncidentButtonEnabled .

// Enables the incident reporting button to show in situations where incident
// reporting is possible.

// Using the SupportNavigationFragment
mNavFragment.setReportIncidentButtonEnabled(true);

// Using the NavigationView
navigationView.setReportIncidentButtonEnabled(true);

Aggiungi un pulsante per i report personalizzati

Al posto del pulsante di segnalazione delle interruzioni standard, puoi aggiungere un pulsante di report personalizzato alla UI di navigazione. Quando l'utente fa clic sul pulsante personalizzato, puoi attivare la visualizzazione del menu Segnala chiamando il metodo showReportIncidentsPanel. Prima di aggiungere un pulsante di report personalizzato, verifica che l'app sia in navigazione attiva e che l'utente si trovi in un paese in cui i report sono attivati chiamando isIncidentReportingAvailable. Se una di queste condizioni non è soddisfatta, il menu Segnala non verrà visualizzato.

  Button customReportIncidentButton = findViewById(R.id.custom_reporting_button);
  
  // Check if reporting is available before displaying your button
  customReportIncidentButton.setVisibility(
      navigationView.isReportingAvailable ? View.VISIBLE : View.GONE);
  
  // Trigger the reporting flow if the button is clicked
  customReportIncidentButton.setOnClickListener(v ->
      navigationView.showReportIncidentsPanel());
  

Utilizza le UI di navigazione personalizzate

Se la tua implementazione dell'SDK di navigazione include elementi UI personalizzati, devi considerare gli elementi di interruzione in tempo reale per evitare conflitti.

Posizionamento del pulsante di segnalazione

Per impostazione predefinita, il pulsante di segnalazione di interruzioni è posizionato nell'angolo in basso/finale della mappa, sul lato destro per le lingue con direzione da sinistra a destra e sul lato sinistro per le lingue con direzione da destra a sinistra. Se devi spostare il pulsante di segnalazione per fare spazio a elementi UI personalizzati, aggiungi un controllo personalizzato BOTTOM_END_BELOW o FOOTER, che sposterà la posizione del pulsante verso l'alto sullo schermo. Il posizionamento delle tue UI personalizzate all'interno dei controlli personalizzati garantisce inoltre che tutti i prompt visualizzati dall'SDK di navigazione siano sovrapposti correttamente agli elementi UI personalizzati durante la visualizzazione. Se non puoi utilizzare i controlli personalizzati, utilizza l'API Prompt Visibility per gestire i potenziali conflitti dell'UI.

API Prompt Visibility (sperimentale)

L'API Prompt Visibility ti aiuta a evitare conflitti tra gli elementi UI generati dall'SDK di navigazione e i tuoi elementi UI personalizzati aggiungendo un listener per ricevere un callback prima che un elemento UI dell'SDK di navigazione venga visualizzato e non appena l'elemento viene rimosso. Puoi ricevere callback per elementi di interruzione in tempo reale, tra cui schede informative, prompt e il menu Segnala delle interruzioni, nonché per altre notifiche generate dall'SDK di navigazione.
// Sample listener
val listener: PromptVisibilityChangedListener = { isVisible ->
	if (isVisible) {
		customFab.visibility = false
		customFooter.visibility = false
		moveSomeOtherThingsAround()
	} else {
		customFab.visibility = true
		customFooter.visibility = true
		moveSomeThingsBackToWhereTheyWereBefore()
	}
}

// Inside onCreate()
navigationView.addPromptVisibilityChangedListener(listener)

// Inside onDestroy()
navigationView.removePromptVisibilityChangedListener(listener)