Для кого предназначено это руководство: Прочитайте это руководство, если вы являетесь разработчиком мобильных приложений и отвечаете за создание навигации в кабине водителя грузовика или другой крупной техники.
Что охватывает это руководство: В этом руководстве объясняется, как использовать маршрут, созданный специально для грузовиков с помощью 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 входят ссылки для указания следующих ограничений:
| Ограничение | Значок выноски и текст | Условия отображения |
|---|---|---|
| Высота | ![]() Желтый цвет означает предупреждение: ваш автомобиль приближается к максимально допустимой высоте. ![]() Красный цвет означает, что высота вашего транспортного средства превышает максимально допустимую. | Желтый индикатор загорается, когда высота транспортного средства приближается к допустимому значению. ![]() Красным цветом обозначается маршрут, если он не соответствует требованиям и нарушает ограничения по высоте. ![]() |
| Масса | ![]() | Красный индикатор загорается, когда вес транспортного средства превышает допустимый предел на дороге. ![]() |
| Грузовики запрещены | ![]() | Красная индикация появляется при движении по участку дороги с ограничением движения для грузовых автомобилей. ![]() |
| Опасные грузы | ![]() | Красным цветом обозначается сообщение, если перевозка опасных грузов транспортным средством запрещена на данном участке дороги. ![]() |
Рабочий процесс с использованием токена маршрутизации
routeToken — это зашифрованный, защищенный снимок маршрута, сгенерированного API маршрутов. Он содержит все детали маршрута, включая информацию о транспортном средстве, использованном для его создания. Использование токена гарантирует, что навигационная сессия будет соответствовать маршруту, который вы запланировали в своей системе.
Обратите внимание, что после запуска навигации маршрут, отображаемый SDK навигации, может изменяться в зависимости от дорожной ситуации и условий движения. В некоторых случаях он может отклоняться от маршрута, указанного в токене маршрута.
В этих случаях, а также в случае отклонения водителя от запланированного маршрута, использование токена маршрута гарантирует, что вновь пересчитанные маршруты будут учитывать атрибуты транспортного средства, заданные в исходном запросе к API маршрутов.
Рабочий процесс состоит из следующих шагов:
- Ваш бэкэнд запрашивает маршрут для грузовиков через API маршрутов .
- API маршрутов возвращает
routeToken. - Ваш бэкэнд отправляет этот токен в ваше мобильное приложение .
- Мобильное приложение передает
routeTokenв SDK навигации для начала поездки. - Навигационный 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: {...})
Следующие шаги
- Изучите SDK: SDK навигации для Android | SDK навигации для iOS
- Настройка пользовательского интерфейса: узнайте , как настроить пользовательский интерфейс Navigation SDK.









