Для кого предназначено это руководство. Прочитайте это руководство, если вы разработчик мобильных приложений и отвечаете за создание пошаговой навигации для водителей грузовиков, автобусов и других крупных коммерческих транспортных средств.
О чем это руководство. В этом руководстве рассказывается, как взять маршрут для грузовика, созданный с помощью Routes API или Route Optimization API, и использовать его для пошаговой навигации с помощью Navigation SDK для iOS.
Что вы узнаете
Вы узнаете, как:
- Используйте
routeToken, чтобы связать планирование маршрутов на сервере с навигацией в приложении. - Настройте Navigation SDK, чтобы использовать заранее спланированный маршрут для грузовика.
- Узнайте, как ограничения для грузовиков показываются водителю в интерфейсе навигации.
Требования
Прежде чем начать, убедитесь, что выполняются следующие требования:
1. Запросите доступ для своего проекта
Прокладка маршрутов для крупногабаритного транспорта доступна ограниченному числу клиентов. Чтобы выразить заинтересованность и запросить доступ для своего облачного проекта Google Cloud, заполните форму обратной связи. Представитель Google свяжется с вами и сообщит о дальнейших действиях.
После того как Google предоставит доступ, убедитесь, что ваш проект Google Cloud настроен для прокладки маршрутов для крупногабаритного транспорта.
Если в вашей организации используются отдельные облачные проекты Google Cloud для API маршрутизации и мобильного Navigation SDK, обратитесь в Google, чтобы подготовить каждый проект.
2. Настройте генерацию маршрутов на сервере и получите токен маршрута
Прежде чем начать навигацию на устройстве, ваш бэкенд-сервер должен сгенерировать маршрут для грузовика и получить routeToken с помощью одного из следующих API:
- Routes API рекомендуется для расчета маршрутов отдельных грузовиков между пунктами отправления и назначения. Инструкции по настройке приведены в статье Как создавать маршруты и рассчитывать время прибытия для крупногабаритных транспортных средств.
- Route Optimization API рекомендуется для оптимизации маршрутов с несколькими остановками для автопарка. Подробную информацию можно найти в руководстве по прокладке маршрутов для крупногабаритных транспортных средств в Route Optimization API.
В запросе к серверной части необходимо указать travelMode: TRUCK, а также физические атрибуты транспортного средства (высоту, ширину, длину, вес, количество осей и наличие опасного груза). Routing API возвращает в ответе routeToken, который ваш бэкенд-сервер передает мобильному приложению.
3. Соответствие минимальным требованиям к SDK и системе
В приложении должна использоваться минимально необходимая версия Navigation SDK 5.4.0 или более поздняя.Кроме того, ваш проект должен соответствовать стандартным требованиям к настройке Navigation SDK.
Ограничения и рекомендации по работе
Прежде чем начать, ознакомьтесь со следующими ограничениями и рекомендациями:
- Географическая доступность. Прокладка маршрутов для крупногабаритных транспортных средств доступна в 48 смежных штатах США (общая доступность) и Японии (экспериментальная версия). Она недоступна на Аляске, Гавайях и территориях США.
- Рекомендации и безопасность для водителей. Водители не должны полагаться исключительно на маршруты, предлагаемые Navigation SDK, как на безопасные или законные. Маршруты могут не подходить для транспортного средства в определенных дорожных условиях, и следование им может подвергнуть водителей опасности, например из-за низких просветов или дорог с ограничением по весу. Водители должны всегда быть внимательными и соблюдать дорожные знаки и местные правила.
- Маршруты, построенные по принципу наилучшего соответствия. Если Routing API не может найти маршрут, который полностью соответствует ограничениям для транспортного средства, он возвращает маршрут, построенный по принципу наилучшего соответствия, который может проходить через участки с ограничениями. Например, Routes API устанавливает в ответе флаг
routeRestrictionsPartiallyIgnored. При навигации по таким маршрутам Navigation SDK показывает выноски с информацией об ограничениях. В таких случаях тщательно планируйте маршруты и не полагайтесь только на помеченный маршрут. - Неподдерживаемые функции. Прокладка маршрутов для крупногабаритного транспорта не поддерживает следующие функции:
- Стоимость платных дорог для грузовиков
- Ограничения скорости для грузовиков и тяжелых транспортных средств.
- Маршруты для радиоактивных опасных материалов
- Лимиты на использование. На запросы к Navigation SDK распространяются стандартные лимиты на использование и квоты. Подробнее об использовании и оплате…
Показ интерфейса для грузовиков (выноски маршрута)
Navigation SDK автоматически показывает на карте визуальные предупреждения, называемые выносками маршрута, чтобы предупредить водителей о предстоящих ограничениях для грузовиков. Выноски появляются для ограничений, которые действуют на запланированном маршруте, но не отображаются на других дорогах поблизости.
Navigation SDK включает выноски для следующих ограничений:
| Ограничение | Значок и текст уточнения | Условия показа |
|---|---|---|
| Высота |
Желтый – предупреждение, высота вашего транспортного средства близка к максимально допустимой.
Красный – высота вашего транспортного средства превышает максимально допустимую. |
Желтый – высота транспортного средства близка к ограничению.
Если маршрут не соответствует требованиям и нарушает ограничение по высоте, появится красная выноска.
|
| Вес |
|
Если вес автомобиля превышает ограничение, установленное для дороги, появляется красная выноска.
|
| Грузовым запрещено |
|
Если на участке дороги действуют ограничения для грузовых автомобилей, появляется красная выноска.
|
| Опасные товары |
|
Красная выноска появляется, когда на участке дороги запрещена перевозка опасных грузов.
|
Как работают токены маршрутов
routeToken – это зашифрованный снимок маршрута, созданный серверной частью маршрутизации Google. Он содержит геометрию запланированного маршрута, а также физические размеры транспортного средства и профиль ограничений.
Процесс включает следующее:
- Запрос маршрута. Ваш бэкенд-сервер запрашивает маршрут для грузовика из Routes API (или Route Optimization API).
- Получение токена. Routing API рассчитывает соответствующий требованиям маршрут и возвращает
routeTokenна ваш бэкенд-сервер. - Передача токена. Бэкенд-сервер передает
routeTokenи координаты пункта назначения в мобильное приложение. - Передача в SDK. Мобильное приложение передает
routeTokenв Navigation SDK. - Запуск навигации. Navigation SDK управляет всеми аспектами пошаговой навигации, включая отрисовку выносок маршрута и динамическое изменение маршрута в соответствии с ограничениями транспортного средства.
Динамический перерасчет и изменение маршрута
Во время навигации загруженность дорог, перекрытые участки или пропущенные повороты могут привести к отклонению от запланированного маршрута.
Когда маршрут обновляется:
- Navigation SDK автоматически пересчитывает маршрут до пункта назначения.
- SDK сохраняет атрибуты и параметры транспортного средства, закодированные в исходном объекте
routeToken. - Новый маршрут не проходит через низкие мосты, мосты с ограничением по весу и дороги, по которым запрещено движение грузовых автомобилей.
Реализация: запуск поездки на грузовике
Чтобы инициализировать и запустить пошаговую навигацию с токеном маршрута для крупногабаритного транспорта, выполните следующие действия:
Шаг 1. Получите токен маршрута из серверной части
Ваше мобильное приложение получает строку routeToken вместе с координатами пункта назначения от вашего бэкенд-сервера. Подробные сведения о том, как создать этот токен на сервере, можно найти в статье Как создавать маршруты и расчетное время прибытия для крупногабаритных транспортных средств в документации Routes API.
Ниже приведен пример токена маршрута.
{
"routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}
Шаг 2. Передайте токен в Navigator
Передайте путевые точки routeToken и пункта назначения в метод mapView.navigator
setDestinations.
При настройке путевых точек и передаче токена маршрута учитывайте следующее:
- Требование к совпадению пункта назначения. Координаты пункта назначения, передаваемые в
setDestinations, должны совпадать с координатами, которые использовались при созданииrouteToken. Если указать другое место назначения, возникнет ошибка. - Прокладывание маршрута по стороне дороги. Крупным коммерческим автомобилям сложно разворачиваться на узких улицах. Чтобы грузовик подъехал к пункту назначения с нужной стороны дороги, задайте
preferSameSideOfRoad = trueдля путевых точек. - Остановки. Чтобы направить грузовик в подходящее место для остановки или разгрузки, задайте параметр
vehicleStopover = trueдля путевых точек. - Точки навигации. Если в пункте назначения есть специальный въезд для грузового транспорта или погрузочная платформа, укажите их с помощью токена точки навигации.
Шаг 3. Обработка статуса маршрута и запуск навигации
Оцените GMSRouteStatus, возвращенный в обратном вызове setDestinations. Если статус – .OK (GMSRouteStatusOK), задайте для isGuidanceActive = true значение guidanceActive = YES, чтобы начать пошаговую навигацию.
Пример кода
Передайте токен маршрута в Navigation SDK с помощью метода mapView.navigator
setDestinations, указав те же путевые точки, которые вы использовали при создании токена маршрута:
// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([destination], routeToken: routeToken, callback: {...})
Дисплеи в автомобилях
Вы можете показывать навигацию для крупногабаритных транспортных средств на встроенных экранах с помощью Navigation for CarPlay.Дальнейшие действия
- Изменение интерфейса навигации. Настройте встроенные элементы управления пользовательского интерфейса и визуальные элементы, такие как компас, кнопка центрирования и перспектива камеры.
- Прослушивание событий навигации. Обрабатывайте обновления навигации и события жизненного цикла, такие как продвижение по маршруту, изменения расчетного времени прибытия и перенаправления.