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 trajet et leur permettent de signaler et de vérifier les perturbations qu'ils rencontrent. Les exemples de perturbations incluent les accidents de la route, les embouteillages, la présence de la police et de radars, les travaux, les voies fermées et certaines conditions météorologiques. Cette page explique les fonctionnalités de perturbation en temps réel et leurs options de configuration, y compris les considérations à prendre en compte pour les applications qui utilisent des UI de navigation personnalisées.

Fonctionnalités de perturbation en temps réel

Le SDK Navigation inclut les fonctionnalités de perturbation en temps réel suivantes 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.

Accroches interactives sur les perturbations sur les 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 en cours s'affichent sous forme de repères le long de l'itinéraire. Les accroches incluent une icône qui indique le type de perturbation.

Accroches sur les itinéraires

Vous pouvez contrôler l'affichage des accroches de perturbations sur les itinéraires à l'aide de setTrafficPromptsEnabled, qui contrôle également l'affichage des alertes automatiques lorsqu'un utilisateur 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 un accroche

Les utilisateurs peuvent appuyer sur un encadré pour afficher une fiche d'informations contenant plus d'informations sur la perturbation, y compris le type de perturbation, l'heure à laquelle elle a été signalée pour la dernière fois et, dans certains cas, une option permettant de voter pour savoir si la perturbation est toujours présente. Deux types de fiches info peuvent s'afficher, selon que l'utilisateur est en navigation active ou non. Les options de configuration varient pour chaque type.

Fiches d'informations sur les itinéraires avant de commencer la navigation active

Lorsqu'un utilisateur appuie sur un encadré sur un aperçu d'itinéraire avant de démarrer la navigation active, une fiche d'informations s'affiche avec plus d'informations sur l'interruption.

Fiche d'informations "Vue d'ensemble"

Vous pouvez contrôler la possibilité pour les utilisateurs d'appuyer sur les accroches de perturbation dans les aperçus de trajets 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

Lorsqu'un avertissement de perturbation s'affiche sur un itinéraire pendant la navigation active, les utilisateurs peuvent appuyer dessus pour afficher une fiche d'informations contenant plus d'informations sur la perturbation, y compris le type de perturbation et l'heure de sa dernière signalisation, ainsi que des boutons permettant de voter pour savoir si la perturbation est toujours présente. Les votes envoyés par les utilisateurs sont traités par Google et peuvent s'afficher sur la carte pour d'autres utilisateurs de Google Maps et d'utilisateurs du SDK Navigation. Ils peuvent également être utilisés pour déterminer si la perturbation doit continuer à s'afficher.

Fiche d'informations de navigation active

Vous pouvez contrôler l'affichage et la possibilité de cliquer 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 approche d'une perturbation.

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

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

Alertes de perturbation automatiques avec vote pendant la navigation active

Lors de la navigation active, lorsqu'un utilisateur 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 savoir 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 du SDK Google Maps et Navigation. Ils peuvent également être utilisés pour déterminer si la perturbation doit continuer à s'afficher.

Fiche d'informations de 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);

Signaler des perturbations pendant la navigation active

En mode navigation active, 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.

Bouton "Signaler" Menu "Rapports"

Vous pouvez configurer la visibilité du bouton de création de rapports 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);

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 "Rapports"

Par défaut, le bouton de signalement des perturbations se trouve en bas de la carte, à droite pour les langues de gauche à droite et à gauche pour les langues de droite à gauche. Si vous devez déplacer le bouton de création de rapports pour laisser de la place aux éléments d'interface utilisateur personnalisés, ajoutez un contrôle personnalisé BOTTOM_END_BELOW ou FOOTER, ce qui repoussera le bouton vers le haut de l'écran. Placer vos propres UI personnalisées dans les commandes personnalisées garantit également que les invites affichées par le SDK Navigation sont correctement superposées à vos éléments d'UI personnalisés lorsqu'elles s'affichent. Si vous ne pouvez pas utiliser de commandes personnalisées, utilisez l'API Prompt Visibility pour gérer les conflits potentiels d'interface utilisateur.

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 ne soit sur le point d'apparaître et dès que l'élément est supprimé. Vous pouvez recevoir des rappels pour les éléments de perturbation en temps réel, y compris les fiches d'informations, les invites et le menu de signalement des 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)