Wybierz platformę: Android iOS

Konfigurowanie zakłóceń w czasie rzeczywistym

Utrudnienia w czasie rzeczywistym to zbiór funkcji, które ostrzegają użytkowników o utrudnieniach na trasie i umożliwiają im zgłaszanie oraz weryfikowanie napotkanych utrudnień. Przykłady utrudnień to wypadki samochodowe, korki, obecność policji i fotoradarów, roboty drogowe, zamknięte pasy ruchu i niektóre warunki pogodowe. Na tej stronie opisujemy funkcje związane z utrudnieniami w czasie rzeczywistym i opcje ich konfiguracji, w tym kwestie dotyczące aplikacji, które korzystają z niestandardowych interfejsów nawigacji.

Funkcje dotyczące utrudnień w czasie rzeczywistym

Pakiet Navigation SDK obejmuje te funkcje dotyczące utrudnień w czasie rzeczywistym, które są częścią podstawowej nawigacji:

Te funkcje można konfigurować i są one domyślnie włączone. W sekcjach poniżej znajdziesz więcej informacji o funkcjach i dostępnych opcjach konfiguracji.

Interaktywne objaśnienia dotyczące utrudnień na trasach

Gdy aplikacja wyświetla trasę, w opisie trasy lub podczas aktywnej nawigacji, wszelkie bieżące zakłócenia są wyświetlane jako objaśnienia na trasie. Gdy włączysz warstwę natężenia ruchu, na mapie będą też widoczne utrudnienia poza trasą. Objaśnienia zawierają ikonę wskazującą typ zakłócenia.

Objaśnienia na trasach

Wyświetlanie objaśnień dotyczących utrudnień na trasach możesz kontrolować za pomocą setTrafficPromptsEnabled, który kontroluje też wyświetlanie automatycznych alertów, gdy użytkownik zbliża się do utrudnienia.

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

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

wyświetlanie szczegółów utrudnień, gdy użytkownik kliknie objaśnienie;

Kliknięcie objaśnienia dotyczącego utrudnień powoduje otwarcie karty informacyjnej z dodatkowymi szczegółami. Dotyczy to zarówno objaśnień na trasie, jak i poza nią, przy czym objaśnienia poza trasą pojawiają się tylko wtedy, gdy włączona jest warstwa natężenia ruchu. Na karcie wyświetlany jest typ utrudnienia, czas ostatniego zgłoszenia, a czasami opcja głosowania, czy utrudnienie nadal występuje. Typ karty informacyjnej i jej opcje konfiguracji różnią się w zależności od tego, czy użytkownik korzysta z aktywnej nawigacji.

karty informacyjne z objaśnieniami w opisach tras przed rozpoczęciem aktywnej nawigacji;

Przed rozpoczęciem aktywnej nawigacji użytkownicy mogą kliknąć objaśnienie na trasie lub poza nią na mapie albo w opisie trasy, aby otworzyć kartę informacyjną. Objaśnienia dotyczące zjazdu z trasy wymagają włączenia warstwy ruchu. Karta informacyjna zawiera więcej informacji o utrudnieniach.

Karta informacyjna Przegląd

Możesz kontrolować możliwość klikania przez użytkowników objaśnień dotyczących utrudnień w opisach tras, aby wyświetlić więcej informacji, za pomocą setTrafficIncidentCardsEnabled.

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

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

Karty informacyjne z objaśnieniami podczas aktywnej nawigacji

Podczas aktywnej nawigacji użytkownicy mogą kliknąć objaśnienie dotyczące utrudnienia na trasie lub poza nią, aby otworzyć kartę informacyjną. Karta zawiera typ utrudnienia i ostatni zgłoszony czas, a także przyciski, za pomocą których użytkownicy mogą głosować, czy utrudnienie nadal występuje.

Głosowanie jest dostępne w przypadku utrudnień na trasie i poza nią w promieniu 5 km od użytkownika, z wyjątkiem zamknięć dróg. Google przetwarza te głosy, aby określić, czy nadal wyświetlać informacje o utrudnieniach. Głosy mogą też pojawiać się na mapie dla innych użytkowników Map Google i pakietu Navigation SDK.

Karta informacyjna aktywnej nawigacji

Możesz kontrolować wyświetlanie i możliwość klikania objaśnień dotyczących utrudnień podczas aktywnej nawigacji za pomocą setTrafficPromptsEnabled, która kontroluje też wyświetlanie objaśnień na trasach i wyświetlanie automatycznych alertów, gdy użytkownik zbliża się do utrudnienia.

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

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

Automatyczne alerty o utrudnieniach z możliwością głosowania podczas aktywnej nawigacji

Podczas aktywnej nawigacji, gdy użytkownik zbliża się do utrudnienia na trasie, pojawia się komunikat z informacjami o utrudnieniu i przyciskami do głosowania, czy utrudnienie nadal występuje. Głosy przesłane przez użytkowników są przetwarzane przez Google i mogą być wyświetlane na mapie innym użytkownikom Map Google i pakietu SDK nawigacji, a także służyć do określania, czy nadal wyświetlać utrudnienia.

Karta informacyjna aktywnej nawigacji

Możesz skonfigurować wyświetlanie alertów podczas aktywnej nawigacji za pomocą setTrafficPromptsEnabled, która kontroluje też wyświetlanie objaśnień na trasach.

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

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

Zgłaszanie utrudnień podczas aktywnej nawigacji

W aktywnym trybie nawigacji w interfejsie nawigacji pojawia się przycisk, który umożliwia użytkownikom zgłaszanie nowych zakłóceń na trasie. Gdy użytkownik kliknie przycisk, pojawi się menu z dostępnymi typami zakłóceń, które można zgłosić. Zgłoszenia przesyłane przez użytkowników są przetwarzane przez Google i mogą być wyświetlane na mapie innym użytkownikom Map Google i pakietu Navigation SDK.

Zgłoszenie zamknięcia drogi może spowodować wyświetlenie alternatywnej trasy umożliwiającej ominięcie zablokowanego odcinka i poproszenie użytkownika o potwierdzenie lub odrzucenie zmiany trasy. Dostępność tej funkcji może być ograniczona.

Przycisk zgłaszania Menu raportowania

Wyświetlanie i ukrywanie przycisku raportowania standardowego

Widoczność przycisku standardowego zgłaszania podczas aktywnej nawigacji możesz skonfigurować za pomocą 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);

Dodawanie przycisku raportowania niestandardowego

Zamiast standardowego przycisku zgłaszania utrudnień możesz dodać do interfejsu nawigacji przycisk niestandardowy. Gdy użytkownik kliknie przycisk niestandardowy, możesz wywołać wyświetlanie menu raportowania, wywołując metodę showReportIncidentsPanel. Zanim dodasz przycisk raportowania niestandardowego, sprawdź, czy aplikacja jest w trybie aktywnej nawigacji, a użytkownik znajduje się w kraju, w którym raportowanie jest włączone. Aby to zrobić, wywołaj funkcję isIncidentReportingAvailable. Jeśli któryś z tych warunków nie jest spełniony, menu raportowania nie będzie widoczne.

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

Praca z niestandardowymi interfejsami nawigacji

Jeśli Twoja implementacja pakietu Navigation SDK zawiera niestandardowe elementy interfejsu, musisz wziąć pod uwagę elementy zakłóceń w czasie rzeczywistym, aby uniknąć konfliktów.

Pozycjonowanie przycisku zgłaszania

Domyślnie przycisk zgłaszania zakłóceń znajduje się w dolnym rogu mapy – po prawej stronie w przypadku języków pisanych od lewej do prawej i po lewej stronie w przypadku języków pisanych od prawej do lewej. Jeśli musisz przesunąć przycisk zgłaszania, aby zrobić miejsce na niestandardowe elementy interfejsu, dodaj niestandardowy element sterujący BOTTOM_END_BELOW lub FOOTER, który przesunie przycisk w górę ekranu. Umieszczenie własnych niestandardowych interfejsów w niestandardowych elementach sterujących zapewnia też, że wszystkie komunikaty wyświetlane przez pakiet Navigation SDK są prawidłowo nakładane na niestandardowe elementy interfejsu. Jeśli nie możesz używać niestandardowych elementów sterujących, użyj interfejsu Prompt Visibility API, aby zarządzać potencjalnymi konfliktami interfejsu.

Prompt Visibility API (eksperymentalny)

Interfejs Prompt Visibility API pomaga uniknąć konfliktów między elementami interfejsu generowanymi przez pakiet Navigation SDK a własnymi elementami interfejsu. W tym celu dodaje detektor, który odbiera wywołanie zwrotne, zanim element interfejsu pakietu Navigation SDK ma się pojawić i zaraz po jego usunięciu. Możesz otrzymywać wywołania zwrotne dotyczące elementów zakłóceń w czasie rzeczywistym, w tym kart informacyjnych, próśb i menu zgłaszania zakłóceń, a także innych powiadomień generowanych przez pakiet Navigation SDK.
// 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)