Sélectionnez une plate-forme : Android iOS

Configurer les perturbations en temps réel

Les perturbations en temps réel sont un ensemble de fonctionnalités qui alertent les utilisateurs des perturbations sur leur itinéraire et leur permettent de signaler et de vérifier les perturbations qu'ils rencontrent. Il peut s'agir d'accidents de la route, d'embouteillages, de la présence de la police et de radars, de travaux, de voies fermées et de certaines conditions météorologiques. Cette page décrit les fonctionnalités de perturbation en temps réel et leurs options de configuration, y compris les points à prendre en compte pour les applications qui utilisent des interfaces utilisateur de navigation personnalisées.

Fonctionnalités de perturbation en temps réel

Le SDK Navigation inclut les fonctionnalités suivantes de perturbation en temps réel dans l'expérience de navigation de base :

Ces fonctionnalités sont configurables et activées par défaut. Les sections suivantes fournissent plus d'informations sur les fonctionnalités et les options de configuration disponibles.

Texte d'accroche interactif sur les perturbations le long des itinéraires

Lorsqu'une application affiche un itinéraire, que ce soit dans un aperçu de l'itinéraire ou pendant la navigation active, les perturbations actuelles s'affichent sous forme de légendes le long de l'itinéraire. Lorsque vous activez le calque de trafic, les perturbations hors itinéraire s'affichent également sur la carte. Les accroches incluent une icône qui indique le type de perturbation.

Accroches le long des itinéraires

Vous pouvez contrôler l'affichage des accroches de perturbation le long des itinéraires à l'aide de setTrafficPromptsEnabled, qui contrôle également l'affichage des alertes automatiques lorsqu'un utilisateur s'approche d'une perturbation.

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

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

Afficher les détails d'une perturbation lorsqu'un utilisateur appuie sur une info-bulle

Appuyez sur une info-bulle de perturbation pour ouvrir une fiche d'informations contenant plus de détails. Cela s'applique aux accroches sur l'itinéraire et hors itinéraire, bien que les accroches hors itinéraire n'apparaissent que si le calque de trafic est activé. La fiche affiche le type de perturbation, l'heure à laquelle elle a été signalée pour la dernière fois et, parfois, une option permettant de voter pour indiquer si la perturbation est toujours présente. Le type de fiche d'informations et ses options de configuration varient selon que l'utilisateur est en navigation active ou non.

Fiches info sur les aperçus de l'itinéraire, avant de démarrer la navigation active

Avant de démarrer la navigation active, les utilisateurs peuvent appuyer sur une accroche sur l'itinéraire ou hors itinéraire sur la carte ou l'aperçu de l'itinéraire pour ouvrir une fiche d'informations. Les accroches hors itinéraire nécessitent l'activation du calque de trafic. La fiche d'informations fournit plus de détails sur la perturbation.

Fiche d'informations générales

Vous pouvez contrôler la possibilité pour les utilisateurs d'appuyer sur les accroches de perturbation dans les aperçus d'itinéraire pour afficher plus d'informations à l'aide de setTrafficIncidentCardsEnabled.

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

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

Fiches d'informations pendant la navigation active

Pendant la navigation active, les utilisateurs peuvent appuyer sur une info-bulle de perturbation sur l'itinéraire ou hors de l'itinéraire pour ouvrir une fiche d'informations. La fiche indique le type de perturbation et l'heure du dernier signalement. Elle inclut des boutons permettant aux utilisateurs de voter pour indiquer si la perturbation est toujours présente.

Le vote est disponible pour les perturbations sur l'itinéraire et hors itinéraire dans un rayon de 5 km autour de l'utilisateur, à l'exception des routes fermées. Google traite ces votes pour déterminer s'il doit continuer à afficher la perturbation. Les votes peuvent également apparaître sur la carte pour les autres utilisateurs de Google Maps et du SDK Navigation.

Fiche d'informations sur la navigation active

Vous pouvez contrôler l'affichage et la possibilité d'appuyer sur les accroches de perturbation pendant la navigation active à l'aide de setTrafficPromptsEnabled, qui contrôle également l'affichage des accroches le long des itinéraires et l'affichage des alertes automatiques lorsqu'un utilisateur s'approche d'une perturbation.

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

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

Alertes de perturbation automatisées avec vote pendant la navigation active

Pendant la navigation active, lorsqu'un utilisateur s'approche d'une perturbation sur un itinéraire, une invite s'affiche avec des informations sur la perturbation et des boutons permettant de voter pour indiquer si la perturbation est toujours présente. Les votes envoyés par les utilisateurs sont traités par Google et peuvent être affichés sur la carte pour les autres utilisateurs de Google Maps et du SDK Navigation. Ils peuvent également être utilisés pour déterminer s'il faut continuer à afficher la perturbation.

Fiche d'informations sur la navigation active

Vous pouvez configurer l'affichage des invites d'alerte pendant la navigation active à l'aide de setTrafficPromptsEnabled, qui contrôle également l'affichage des accroches le long des itinéraires.

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

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

Signalement des perturbations pendant la navigation active

En mode de navigation actif, un bouton s'affiche dans l'interface utilisateur de navigation. Il permet aux utilisateurs de signaler de nouvelles perturbations sur leur itinéraire. Lorsqu'un utilisateur appuie sur le bouton, un menu s'affiche avec les types de perturbations disponibles à signaler. Les signalements envoyés par les utilisateurs sont traités par Google et peuvent être affichés sur la carte pour les autres utilisateurs de Google Maps et du SDK Navigation.

Le signalement d'une route fermée peut proposer un itinéraire bis pour contourner le segment bloqué, ce qui invite l'utilisateur à confirmer ou à refuser le changement d'itinéraire. Cette fonctionnalité est disponible sous réserve de disponibilité.

Bouton "Rapports" Menu "Rapports"

Afficher ou masquer le bouton de reporting standard

Vous pouvez configurer la visibilité du bouton de signalement standard pendant la navigation active à l'aide de 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);

Ajouter un bouton de signalement personnalisé

À la place du bouton de signalement d'incident standard, vous pouvez ajouter un bouton de signalement personnalisé à l'interface utilisateur de navigation. Lorsque l'utilisateur clique sur le bouton personnalisé, vous pouvez déclencher l'affichage du menu de signalement en appelant la méthode showReportIncidentsPanel. Avant d'ajouter un bouton de signalement personnalisé, vérifiez que l'application est en mode de navigation active et que l'utilisateur se trouve dans un pays où le signalement est activé en appelant isIncidentReportingAvailable. Si l'une de ces conditions n'est pas remplie, le menu Signaler ne s'affiche pas.

  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());
  

Utiliser des UI de navigation personnalisées

Si votre implémentation du SDK Navigation inclut des éléments d'interface utilisateur personnalisés, vous devez tenir compte des éléments de perturbation en temps réel pour éviter les conflits.

Positionnement du bouton de signalement

Par défaut, le bouton de signalement des perturbations est positionné en bas à droite de la carte pour les langues qui se lisent de gauche à droite, et en bas à gauche pour les langues qui se lisent de droite à gauche. Si vous devez déplacer le bouton de signalement pour faire de la place à des éléments d'interface utilisateur personnalisés, ajoutez une commande personnalisée BOTTOM_END_BELOW ou FOOTER, qui déplacera le bouton vers le haut de l'écran. Placer vos propres UI personnalisées dans les commandes personnalisées permet également de s'assurer que toutes les invites affichées par le SDK Navigation sont correctement superposées à vos éléments d'interface utilisateur personnalisés lorsqu'ils sont affichés. Si vous ne pouvez pas utiliser de commandes personnalisées, utilisez l'API Prompt Visibility pour gérer les conflits d'UI potentiels.

API Prompt Visibility (expérimentale)

L'API Prompt Visibility vous aide à éviter les conflits entre les éléments d'interface utilisateur générés par le SDK Navigation et vos propres éléments d'interface utilisateur personnalisés en ajoutant un écouteur pour recevoir un rappel avant qu'un élément d'interface utilisateur du SDK Navigation n'apparaisse et dès qu'il est supprimé. Vous pouvez recevoir des rappels pour les éléments de perturbation en temps réel, y compris les fiches info, les invites et le menu Signaler les perturbations, ainsi que pour d'autres notifications générées par le SDK Navigation.
// 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)