Выберите платформу: Android iOS

Настройте сбои в режиме реального времени

Сбои в режиме реального времени — это набор функций, которые оповещают пользователей о сбоях на их маршруте и позволяют пользователям сообщать и проверять сбои, с которыми они сталкиваются. Примерами сбоев являются аварии на дорогах, заторы на дорогах, присутствие полиции и камер контроля скорости, строительные работы, перекрытия полос и определенные погодные условия. На этой странице объясняются функции сбоев в режиме реального времени и параметры их конфигурации, включая рекомендации для приложений, использующих пользовательские интерфейсы навигации.

Функции обнаружения сбоев в режиме реального времени

В состав Navigation SDK входят следующие функции реагирования в реальном времени как часть основного навигационного опыта:

Эти функции настраиваются и включены по умолчанию. В следующих разделах представлена ​​дополнительная информация о функциях и доступных параметрах конфигурации.

Интерактивные предупреждения о нарушениях на маршрутах

Когда приложение отображает маршрут, либо в обзоре маршрута, либо во время активной навигации, любые текущие сбои отображаются в виде выносок вдоль маршрута. Выноски включают значок, который указывает тип сбоя.

Выноски вдоль маршрутов

Вы можете управлять отображением предупреждений о сбоях на маршрутах с помощью shouldDisplayPrompts , который также управляет отображением автоматических оповещений, когда пользователь приближается к сбою .

mapView.navigator.shouldDisplayPrompts = true

Отображение сведений о сбоях, когда пользователь нажимает на выноску

Пользователи могут нажать на выноску, чтобы отобразить информационную карточку с дополнительной информацией о сбое, включая тип сбоя, время последнего сообщения о нем и, в некоторых случаях, возможность проголосовать за то, сохраняется ли сбой. Существует два разных типа информационных карточек, которые могут отображаться в зависимости от того, находится ли пользователь в режиме активной навигации, и параметры конфигурации различаются для каждого типа.

Вызов информационных карточек на обзорах маршрутов перед началом активной навигации

Когда пользователь нажимает на выноску на обзоре маршрута, перед началом активной навигации появляется информационная карточка с дополнительной информацией о нарушении.

Обзорная информационная карточка

Вы можете контролировать возможность пользователей нажимать на уведомления о сбоях в обзорах маршрутов для отображения дополнительной информации с помощью showsIncidentCards .

mapView.settings.showsIncidentCards = true

Вызов информационных карточек во время активной навигации

Когда во время активной навигации вдоль маршрута появляется выноска о нарушении, пользователи могут нажать на выноску, чтобы отобразить информационную карточку с дополнительной информацией о нарушении, включая тип нарушения и время последнего сообщения о нем, а также кнопки для голосования о том, сохраняется ли нарушение. Голоса, отправленные пользователями, обрабатываются Google и могут отображаться на карте для других пользователей Google Maps и Navigation SDK, а также использоваться для определения того, следует ли продолжать показывать нарушение.

Карточка активной навигационной информации

Вы можете управлять отображением и возможностью нажатия на уведомления о сбоях во время активной навигации с помощью shouldDisplayPrompts , который также управляет отображением уведомлений вдоль маршрутов и отображением автоматических оповещений, когда пользователь приближается к сбою .

mapView.navigator.shouldDisplayPrompts = true

Автоматические оповещения о сбоях с голосованием во время активной навигации

Во время активной навигации, когда пользователь приближается к помехе на маршруте, появляется подсказка с информацией о помехе и кнопками для голосования о том, присутствует ли помеха. Голоса, отправленные пользователями, обрабатываются Google и могут быть отображены на карте для других пользователей Google Maps и Navigation SDK, а также использоваться для определения того, следует ли продолжать показывать помеху.

Карточка активной навигационной информации

Вы можете настроить отображение предупреждающих подсказок во время активной навигации с помощью shouldDisplayPrompts , который также управляет отображением выносок вдоль маршрутов .

mapView.navigator.shouldDisplayPrompts = true

Отчет о сбоях во время активной навигации

В активном режиме навигации на пользовательском интерфейсе навигации появляется кнопка, которая позволяет пользователям сообщать о новых нарушениях на своем маршруте. Когда пользователь нажимает кнопку, появляется меню с доступными типами нарушений, о которых можно сообщить. Отчеты, которые отправляют пользователи, обрабатываются Google и могут отображаться на карте для других пользователей Google Maps и Navigation SDK.

Кнопка «Сообщить»Меню отчетов

Видимость кнопки сообщения об инциденте во время активной навигации можно настроить с помощью navigationReportIncidentButtonEnabled .

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

Работа с пользовательскими интерфейсами навигации

Если ваша реализация Navigation SDK включает в себя пользовательские элементы пользовательского интерфейса, вам необходимо учитывать элементы нарушения работы в реальном времени, чтобы избежать конфликтов.

Расположение кнопки отчета

По умолчанию кнопка сообщения о сбоях расположена в нижнем конце/заднем углу карты — справа для языков с письмом слева направо и слева для языков с письмом справа налево. Если вам нужно переместить кнопку сообщения, чтобы освободить место для пользовательских элементов пользовательского интерфейса, используйте bottomTrailingButtonsLayoutGuide .

Быстрый

// 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;

API быстрой видимости (экспериментальный)

API Prompt Visibility помогает избегать конфликтов между элементами пользовательского интерфейса, сгенерированными Navigation SDK, и вашими собственными пользовательскими элементами пользовательского интерфейса, добавляя слушателя для получения обратного вызова до того, как элемент пользовательского интерфейса Navigation SDK появится, и как только элемент будет удален. Вы можете получать обратные вызовы для элементов сбоев в реальном времени, включая информационные карточки, подсказки и меню отчетов о сбоях, а также для других уведомлений, сгенерированных Navigation SDK.

Быстрый

// 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.
}
...