Wybierz platformę: Android iOS

Konfigurowanie przerw w transmisji w czasie rzeczywistym

Przerwy w czasie rzeczywistym to zbiór funkcji, które ostrzegają użytkowników o przerwach na trasie i umożliwiają im zgłaszanie i weryfikowanie napotkanych przerw. Przykłady zakłóceń to wypadki drogowe, korki, obecność fotoradarów i policji, roboty drogowe, zamykanie pasów ruchu oraz niektóre warunki pogodowe. Na tej stronie znajdziesz informacje o funkcjach zakłóceń w czasie rzeczywistym i ich opcjach konfiguracji, w tym o uwagach dotyczących aplikacji, które korzystają z niestandardowych interfejsów nawigacji.

Funkcje zakłóceń w czasie rzeczywistym

Pakiet SDK do nawigacji obejmuje te funkcje zakłóceń w czasie rzeczywistym, które są częścią podstawowej nawigacji:

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

Interaktywne ostrzeżenia o zakłóceniach na trasach

Gdy aplikacja wyświetla trasę w przeglądzie lub podczas aktywnej nawigacji, wszelkie bieżące zakłócenia są wyświetlane jako objaśnienia wzdłuż trasy. W ramkach znajdują się ikony wskazujące rodzaj zakłócenia.

Objaśnienia na trasach

Możesz kontrolować wyświetlanie informacji o zakłóceniach na trasach za pomocą shouldDisplayPrompts, która kontroluje też wyświetlanie automatycznych alertów, gdy użytkownik zbliża się do miejsca wystąpienia zakłócenia.

mapView.navigator.shouldDisplayPrompts = true

Wyświetlanie szczegółów przerwy po kliknięciu przez użytkownika etykiety

Użytkownicy mogą kliknąć powiadomienie, aby wyświetlić kartę informacyjną z dodatkowymi informacjami na temat zakłócenia, w tym rodzajem zakłócenia, czasem ostatniego zgłoszenia i w niektórych przypadkach opcją głosowania na temat tego, czy zakłócenie nadal występuje. W zależności od tego, czy użytkownik korzysta z aktywnej nawigacji, mogą wyświetlać się 2 rodzaje kart informacyjnych. Opcje konfiguracji różnią się w zależności od typu karty.

karty z informacjami na mapie nawigacyjnej przed rozpoczęciem aktywnej nawigacji;

Gdy użytkownik kliknie przycisk na podsumowaniu trasy przed rozpoczęciem aktywnej nawigacji, pojawi się karta informacyjna z dodatkowymi informacjami o przerwie.

Karta informacyjna Przegląd

Możesz kontrolować, czy użytkownicy mogą klikać informacje o zakłóceniach na stronie podsumowania trasy, aby wyświetlić więcej informacji. Użyj do tego showsIncidentCards.

mapView.settings.showsIncidentCards = true

karty z informacjami w ramach aktywnej nawigacji,

Gdy podczas aktywnej nawigacji na trasie pojawi się komunikat o zakłóceniu, użytkownicy mogą go kliknąć, aby wyświetlić kartę z dodatkowymi informacjami na temat zakłócenia, w tym jego rodzajem i czasem ostatniego zgłoszenia, a także przyciskami umożliwiającymi zagłosowanie, czy zakłócenie 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 użytkownikom pakietu SDK Nawigacji. Mogą też służyć do określenia, czy nadal wyświetlać zakłócenie.

Karta z informacjami o aktywnej nawigacji

Możesz kontrolować wyświetlanie i możliwość dotknięcia powiadomień o przerwie w funkcjonowaniu podczas aktywnej nawigacji za pomocą shouldDisplayPrompts, które kontroluje też wyświetlanie powiadomień na trasiewyświetlanie automatycznych alertów, gdy użytkownik zbliża się do miejsca przerwy w funkcjonowaniu.

mapView.navigator.shouldDisplayPrompts = true

Automatyczne alerty o przerwie z głosowaniem podczas aktywnej nawigacji

Podczas aktywnej nawigacji, gdy użytkownik zbliża się do miejsca zakłócenia na trasie, wyświetla się komunikat z informacjami o zakłóceniu i przyciskami do głosowania, czy zakłócenie nadal występuje. Głosy przesłane przez użytkowników są przetwarzane przez Google i mogą być wyświetlane na mapie dla innych użytkowników Map Google i pakietu SDK nawigacji, a także służyć do określenia, czy nadal wyświetlać zakłócenie.

Karta z informacjami o aktywnej nawigacji

Wyświetlanie alertów podczas aktywnej nawigacji możesz skonfigurować za pomocą ustawienia shouldDisplayPrompts, które kontroluje też wyświetlanie wywołań wzdłuż trasy.

mapView.navigator.shouldDisplayPrompts = true

Zgłaszanie zakłóceń podczas aktywnej nawigacji

W trybie aktywnej 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ń do zgłoszenia. Zgłoszenia przesyłane przez użytkowników są przetwarzane przez Google i mogą być wyświetlane na mapie innym użytkownikom pakietu SDK Map Google i Nawigacji.

Przycisk zgłaszania Menu zgłaszania

Za pomocą opcji navigationReportIncidentButtonEnabled możesz skonfigurować widoczność przycisku zgłaszania podczas aktywnej nawigacji.

// Enables the incident reporting FAB to show in situations where incident
// reporting is possible.
mapView.settings.navigationReportIncidentButtonEnabled = true

Praca z niestandardowymi interfejsami nawigacji

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

Umieszczenie przycisku raportowania

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 chcesz przenieść przycisk raportowania, aby zrobić miejsce na niestandardowe elementy interfejsu, użyj bottomTrailingButtonsLayoutGuide.

Swift

// Create a new layout guide
let topRightLayoutGuide = UILayoutGuide()
self.view.addLayoutGuide(topRightLayoutGuide)

// Activate constraints using fixed constants here as an example
// assuming the current reporting button is of fixed height
topRightLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 50).isActive = true
topRightLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -14).isActive = true

// Assign the layout guide
_mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide

// Create an alternate layout guide to use when the header and the footer are not full width
let topRightAlternateLayoutGuide = UILayoutGuide()
self.view.addLayoutGuide(topRightAlternateLayoutGuide)

// Activate constraints using fixed constants here as an example
// assuming the current RTD button is of fixed height
topRightAlternateLayoutGuide.topAnchor.constraint(equalTo: _mapView.navigationHeaderLayoutGuide.bottomAnchor, constant: 20).isActive = true
topRightAlternateLayoutGuide.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true

// Assign the layout guide
_mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide

Objective-C

// Create a new layout guide
UILayoutGuide *topRightLayoutGuide = [[UILayoutGuide alloc] init];
[self.view addLayoutGuide:topRightLayoutGuide];

// Activate constraints using fixed constants here as an example
// assuming the current RTD button is of fixed height
[[topRightLayoutGuide.topAnchor
    constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor
                   constant:50]
    setActive:YES];

[[topRightLayoutGuide.trailingAnchor
    constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor
                   constant:-14]
    setActive:YES];

// Assign the layout guide
_mapView.bottomTrailingButtonsLayoutGuide = topRightLayoutGuide;

// Create an alternate layout guide to use when the header and the footer are not full width
UILayoutGuide *topRightAlternateLayoutGuide = [[UILayoutGuide alloc] init];
[self.view addLayoutGuide:topRightAlternateLayoutGuide];

// Activate constraints using fixed constants here as an example
// assuming the current RTD button is of fixed height
[[topRightAlternateLayoutGuide.topAnchor
    constraintEqualToAnchor:_mapView.navigationHeaderLayoutGuide.bottomAnchor
                   constant:50]
    setActive:YES];

[[topRightAlternateLayoutGuide.trailingAnchor
    constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor
                   constant:-14]
    setActive:YES];

// Assign the layout guide
_mapView.bottomTrailingButtonsAlternateLayoutGuide = topRightAlternateLayoutGuide;

Prompt Visibility API (eksperymentalny)

Interfejs API do wyświetlania promptów pomaga uniknąć konfliktów między elementami interfejsu generowanymi przez pakiet SDK nawigacji a Twoimi niestandardowymi elementami interfejsu. Aby to osiągnąć, dodaj odbiornika wywołania zwrotnego, który będzie wywoływany przed wyświetleniem elementu interfejsu pakietu SDK nawigacji 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, promptów i menu zgłaszania zakłóceń, a także innych powiadomień generowanych przez Navigation SDK.

Swift

// Additional methods added to GMSNavigatorListener
...
func navigatorWillPresentPrompt(_ navigator: GMSNavigator) {
  // Hide any sort of custom UI element.
}

func navigatorDidDismissPrompt(_ navigator: GMSNavigator) {
  // Show any sort of custom UI element.
}
...

Objective-C

// Additional methods added to GMSNavigatorListener
...
- (void)navigatorWillPresentPrompt:(GMSNavigator *)navigator {
  // Hide any sort of custom UI element.
}

- (void)navigatorDidDismissPrompt:(GMSNavigator *)navigator {
  // Show any sort of custom UI element.
}
...