Обеспечить пошаговую навигацию для больших транспортных средств

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

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

Что вы узнаете

Вы научитесь делать следующее:

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

Предварительные требования

Прежде чем начать, вы должны соответствовать следующим требованиям.

Настройка проекта

Функция маршрутизации для крупногабаритных транспортных средств доступна ограниченному кругу клиентов. Свяжитесь с нами, чтобы запросить доступ . После получения доступа убедитесь, что ваш проект Google Cloud настроен для маршрутизации для крупногабаритных транспортных средств. Если вы используете отдельные проекты для API маршрутов и SDK навигации, необходимо настроить оба проекта.

Сгенерировать токен маршрута

Сначала необходимо сгенерировать маршрут, следуя инструкциям в руководстве «Генерация маршрутов для грузовиков и расчетного времени прибытия» . Результатом этого процесса является routeToken , необходимый для выполнения шагов, описанных в этом руководстве.

Минимальные требования

В вашем приложении должна использоваться минимально необходимая версия Navigation SDK:

  • Android: 5.2.0 или более поздняя версия.
  • iOS: 5.4.0 или более поздняя версия.

Кроме того, выполняются все требования для использования Navigation SDK:

Ограничения

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

  • Географическая доступность : Маршрутизация для крупногабаритных транспортных средств доступна только на территории 48 смежных штатов США .
  • Рекомендации для водителей и правила безопасности . Водители не должны полагаться исключительно на маршруты, возвращаемые этим API, как на безопасные или законные. Маршруты не гарантируют соответствия транспортному средству, и следование им может подвергнуть водителей опасностям, таким как низкие мосты или дороги, где запрещено движение крупногабаритных транспортных средств.
  • Маршруты, соответствующие ограничениям . В некоторых случаях API не может найти маршрут, полностью соответствующий ограничениям на передвижение. Вместо этого он возвращает маршрут, соответствующий ограничениям, который может проходить через зоны с ограничениями. Ответ API Routes четко помечает такие маршруты в поле routeRestrictionsPartiallyIgnored . В таких случаях тщательно планируйте свой маршрут, в идеале используя другие исходные данные. Не используйте помеченный маршрут в качестве единственного источника достоверной информации для планирования или навигации.
  • Неподдерживаемые функции : Маршрутизация крупногабаритных транспортных средств не поддерживает следующие функции:
    • цены на проезд по платным дорогам для грузовиков
    • Ограничения скорости
    • Маршрутизация радиоактивных опасных материалов
  • Ограничения на использование: Все запросы подлежат стандартным ограничениям по количеству запросов в секунду (QPS) .

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

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

В состав SDK входят ссылки для указания следующих ограничений:

Ограничение Значок выноски и текст Условия отображения
Высота A yellow height restriction icon
Желтый цвет означает предупреждение: ваш автомобиль приближается к максимально допустимой высоте.
A red height restriction icon
Красный цвет означает, что высота вашего транспортного средства превышает максимально допустимую.
Желтый индикатор загорается, когда высота транспортного средства приближается к допустимому значению.
A map with a height restriction warning
Красным цветом обозначается маршрут, если он не соответствует требованиям и нарушает ограничения по высоте.
A map with a height restriction violation
Масса A weight restriction icon Красный индикатор загорается, когда вес транспортного средства превышает допустимый предел на дороге.
A map with a weight restriction icon
Грузовики запрещены A trucks prohibited icon Красная индикация появляется при движении по участку дороги с ограничением движения для грузовых автомобилей.
A map with a trucks prohibited icon
Опасные грузы A hazardous goods icon Красным цветом обозначается сообщение, если перевозка опасных грузов транспортным средством запрещена на данном участке дороги.
A map with a hazardous goods icon

Рабочий процесс с использованием токена маршрутизации

routeToken — это зашифрованный, защищенный снимок маршрута, сгенерированного API маршрутов. Он содержит все детали маршрута, включая информацию о транспортном средстве, использованном для его создания. Использование токена гарантирует, что навигационная сессия будет соответствовать маршруту, который вы запланировали в своей системе.

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

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

Рабочий процесс состоит из следующих шагов:

  1. Ваш бэкэнд запрашивает маршрут для грузовиков через API маршрутов .
  2. API маршрутов возвращает routeToken .
  3. Ваш бэкэнд отправляет этот токен в ваше мобильное приложение .
  4. Мобильное приложение передает routeToken в SDK навигации для начала поездки.
  5. Навигационный SDK обрабатывает все аспекты пошаговой навигации , включая изменение маршрута в случае отклонения водителя от намеченного пути, сохраняя при этом исходные ограничения для транспортного средства.

Реализация: Запуск поездки, специально предназначенной для грузовика.

Для запуска сеанса навигации с вашим маршрутом для грузовиков необходимо передать токен маршрута в навигатор.

Шаг 1: Получите токен маршрута

Ваше приложение получает строку routeToken от вашего бэкэнд-сервера.

Следующий код представляет собой пример токена:

CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g

Шаг 2: Передайте токен навигатору.

Передайте routeToken навигатору при указании пункта назначения поездки. Затем SDK навигации будет использовать этот токен для всех расчетов маршрута поездки.

Обратите внимание, что в Navigation SDK есть конфигурация TravelMode , которую необходимо установить в TravelMode.DRIVING . Это отдельная конфигурация от конфигурации travelMode в Routes API, которую необходимо установить в TRUCK . Конфигурация travelMode в Routes API закодирована в routeToken и сигнализирует Navigation SDK о необходимости отображения специфичного для грузовиков интерфейса и маршрута.

Android

Используйте CustomRoutesOptions.builder() для установки токена, а затем передайте его в navigator.setDestinations() .

// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"

val customRoutesOptions = CustomRoutesOptions.builder()
    .setRouteToken(routeToken)
    .setTravelMode(TravelMode.DRIVING)
    .build()

// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
    .setLatLng(10.0, 20.0)
    .setTitle("title")
    .setVehicleStopover(true)
    .build()
destinations.add(destination);

navigator.setDestinations(destinations, customRoutesOptions)

iOS

Передайте токен маршрута в SDK навигации, используя метод setDestinations объекта mapView.navigator , указав те же путевые точки назначения, которые вы использовали при создании токена маршрута:

// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"

mapView.navigator?.setDestinations([destination], routeToken: routeToken, callback: {...})

Следующие шаги