Echtzeitstörungen konfigurieren
Die Echtzeit-Störungsmeldungen sind eine Sammlung von Funktionen, die Nutzer über Störungen auf ihrer Route informieren und es ihnen ermöglichen, Störungen zu melden und zu bestätigen. Beispiele für Störungen sind Unfälle, Staus, Polizeipräsenz und Blitzer, Baustellen, Spursperrungen und bestimmte Wetterbedingungen. Auf dieser Seite werden die Funktionen für Echtzeitstörungen und ihre Konfigurationsoptionen beschrieben, einschließlich Überlegungen für Apps, die benutzerdefinierte Navigations-UIs verwenden.
Echtzeitfunktionen für Störungen
Das Navigation SDK bietet die folgenden Echtzeitfunktionen für Störungen im Rahmen der Hauptnavigation:- Interaktive Hinweise zu Störungen auf Routen
- Automatische Meldungen zu Störungen mit Abstimmung während der aktiven Navigation:
- Störungen während der aktiven Navigation melden
Diese Funktionen sind konfigurierbar und standardmäßig aktiviert. In den folgenden Abschnitten finden Sie weitere Informationen zu den Funktionen und verfügbaren Konfigurationsoptionen.
Interaktive Hinweise zu Störungen entlang der Route
Wenn eine App eine Route anzeigt, entweder in einer Routenübersicht oder während der aktiven Navigation, werden aktuelle Störungen als Callouts entlang der Route angezeigt. Wenn Sie die Verkehrsebene aktivieren, werden auch Störungen außerhalb der Route auf der Karte angezeigt. Die Callouts enthalten ein Symbol, das die Art der Störung angibt.
Mit setTrafficPromptsEnabled können Sie die Anzeige von Hinweisen zu Störungen entlang von Routen steuern. Damit wird auch die Anzeige automatischer Benachrichtigungen gesteuert, wenn sich ein Nutzer einer Störung nähert.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Details zu Störungen anzeigen, wenn ein Nutzer auf einen Zusatz tippt
Wenn Sie auf einen Hinweis zu einer Störung tippen, wird eine Infokarte mit weiteren Details geöffnet. Das gilt sowohl für Hinweise auf der Route als auch für Hinweise abseits der Route. Hinweise abseits der Route werden jedoch nur angezeigt, wenn die Verkehrsebene aktiviert ist. Auf der Karte werden die Art der Störung, der Zeitpunkt der letzten Meldung und manchmal eine Option angezeigt, mit der Sie abstimmen können, ob die Störung noch besteht. Der Typ der Infokarte und die Konfigurationsoptionen hängen davon ab, ob der Nutzer die aktive Navigation verwendet.
Infokarten in Routenübersichten vor dem Start der aktiven Navigation
Bevor Nutzer die aktive Navigation starten, können sie auf der Karte oder in der Routenübersicht auf einen Callout auf oder abseits der Route tippen, um eine Infokarte zu öffnen. Für Hinweise abseits der Route muss die Verkehrsebene aktiviert sein. Die Infokarte enthält weitere Details zur Störung.
Mit setTrafficIncidentCardsEnabled können Sie festlegen, ob Nutzer auf Routenübersichten auf Hinweise zu Störungen tippen können, um weitere Informationen aufzurufen.
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
Infokarten während der aktiven Navigation
Während der aktiven Navigation können Nutzer auf einen Hinweis zu einer Störung auf oder abseits der Route tippen, um eine Infokarte zu öffnen. Auf der Karte werden die Art der Störung und der Zeitpunkt der letzten Meldung angezeigt. Außerdem enthält sie Schaltflächen, über die Nutzer abstimmen können, ob die Störung noch besteht.
Abstimmungen sind für Störungen auf und abseits der Route im Umkreis von 5 km um den Nutzer möglich, ausgenommen Straßensperrungen. Google verarbeitet diese Abstimmungen, um zu entscheiden, ob die Störung weiterhin angezeigt werden soll. Die Abstimmungen können auch auf der Karte für andere Nutzer von Google Maps und dem Navigation SDK angezeigt werden.
Mit setTrafficPromptsEnabled können Sie die Anzeige und Antippbarkeit von Hinweisen zu Störungen während der aktiven Navigation steuern. Damit wird auch die Anzeige von Hinweisen entlang von Routen und die Anzeige von automatischen Benachrichtigungen, wenn sich ein Nutzer einer Störung nähert, gesteuert.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Automatische Warnungen zu Störungen mit Abstimmung während der aktiven Navigation
Wenn sich ein Nutzer während der aktiven Navigation einer Störung auf einer Route nähert, wird eine Aufforderung mit Informationen zur Störung und Schaltflächen angezeigt, über die er angeben kann, ob die Störung noch besteht. Die von Nutzern abgegebenen Stimmen werden von Google verarbeitet und können anderen Nutzern von Google Maps und dem Navigation SDK auf der Karte angezeigt werden. Außerdem werden sie verwendet, um zu bestimmen, ob die Verkehrsbehinderung weiterhin angezeigt werden soll.
Mit setTrafficPromptsEnabled können Sie die Anzeige von Warnmeldungen während der aktiven Navigation konfigurieren. Damit wird auch die Anzeige von Callouts entlang von Routen gesteuert.
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
Meldung von Störungen während der aktiven Navigation
Im aktiven Navigationsmodus wird auf der Navigationsoberfläche eine Schaltfläche angezeigt, über die Nutzer neue Störungen auf ihrer Route melden können. Wenn ein Nutzer auf die Schaltfläche tippt, wird ein Menü mit den verfügbaren Störungsarten angezeigt, die gemeldet werden können. Die von Nutzern eingereichten Meldungen werden von Google verarbeitet und können auf der Karte für andere Nutzer von Google Maps und des Navigation SDK angezeigt werden.
Wenn Sie eine Straßensperrung melden, wird Ihnen möglicherweise eine alternative Route angezeigt, um den gesperrten Abschnitt zu umgehen. Sie werden dann aufgefordert, die Routenänderung zu bestätigen oder abzulehnen. Diese Funktion ist nicht überall verfügbar.
Schaltfläche für Standardberichte ein- oder ausblenden
Mit setReportIncidentButtonEnabled können Sie die Sichtbarkeit der Standard-Meldeschaltfläche während der aktiven Navigation konfigurieren.
// 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);
Schaltfläche für benutzerdefinierte Berichte hinzufügen
Anstelle der Standardschaltfläche für die Meldung von Störungen können Sie der Navigations-UI eine benutzerdefinierte Schaltfläche hinzufügen. Wenn der Nutzer auf die benutzerdefinierte Schaltfläche klickt, können Sie die Anzeige des Melden-Menüs auslösen, indem Sie die Methode showReportIncidentsPanel aufrufen. Bevor Sie eine benutzerdefinierte Meldeschaltfläche hinzufügen, prüfen Sie, ob die App im aktiven Navigationsmodus ist und sich der Nutzer in einem Land befindet, in dem das Melden aktiviert ist. Rufen Sie dazu isIncidentReportingAvailable auf. Wenn eine dieser Bedingungen nicht erfüllt ist, wird das Menü „Melden“ nicht angezeigt.
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());
Mit benutzerdefinierten Navigations-UIs arbeiten
Wenn Ihre Implementierung des Navigation SDK benutzerdefinierte UI-Elemente enthält, müssen Sie die Elemente für Echtzeitstörungen berücksichtigen, um Konflikte zu vermeiden.
Positionierung der Meldeschaltfläche
Standardmäßig befindet sich die Schaltfläche zum Melden von Störungen am unteren Ende/in der hinteren Ecke der Karte – bei linksläufigen Sprachen auf der rechten Seite und bei rechtsläufigen Sprachen auf der linken Seite. Wenn Sie die Meldeschaltfläche verschieben müssen, um Platz für benutzerdefinierte UI-Elemente zu schaffen, fügen Sie ein benutzerdefiniertes Steuerelement vom TypBOTTOM_END_BELOW oder FOOTER hinzu. Dadurch wird die Position der Schaltfläche auf dem Bildschirm nach oben verschoben. Wenn Sie Ihre eigenen benutzerdefinierten Benutzeroberflächen in den benutzerdefinierten Steuerelementen platzieren, werden alle vom Navigation SDK angezeigten Aufforderungen ordnungsgemäß über Ihren benutzerdefinierten UI-Elementen eingeblendet. Wenn du keine benutzerdefinierten Steuerelemente verwenden kannst, nutze die Prompt Visibility API, um potenzielle UI-Konflikte zu verwalten.
Prompt Visibility API (experimentell)
Mit der Prompt Visibility API können Sie Konflikte zwischen UI-Elementen, die vom Navigation SDK generiert werden, und Ihren eigenen benutzerdefinierten UI-Elementen vermeiden. Dazu fügen Sie einen Listener hinzu, der einen Callback empfängt, bevor ein UI-Element des Navigation SDK angezeigt wird und sobald das Element entfernt wird. Sie können Callbacks für Echtzeit-Störungselemente erhalten, einschließlich Infokarten, Aufforderungen und dem Melden-Menü, sowie für andere Benachrichtigungen, die vom Navigation SDK generiert werden.// 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)