Для кого предназначено это руководство: Прочитайте это руководство, если вы — мобильный разработчик, ответственный за создание пошаговой навигации для водителей грузовиков, автобусов или других крупных коммерческих транспортных средств.
Что охватывает это руководство: В этом руководстве объясняется, как использовать маршрут для грузовиков, сгенерированный с помощью Routes API или Route Optimization API , для создания пошаговой навигации с помощью Navigation SDK для iOS.
Что вы узнаете
Вы научитесь выполнять следующие задачи:
- Используйте
routeTokenдля связи планирования маршрутов на стороне бэкэнда с навигацией внутри приложения. - Настройте навигационный SDK для использования заранее спланированного маршрута для грузовиков.
- Разберитесь, как ограничения, специфичные для грузовых автомобилей, отображаются водителю в пользовательском интерфейсе навигации.
Предварительные требования
Прежде чем начать, убедитесь, что вы соответствуете следующим требованиям:
1. Запросите доступ к своему проекту.
Функция маршрутизации для крупногабаритных транспортных средств доступна ограниченному кругу клиентов. Чтобы выразить заинтересованность и запросить доступ для вашего проекта в Google Cloud, заполните контактную форму . Представитель Google свяжется с вами для уточнения дальнейших шагов.
После того как Google предоставит доступ, убедитесь, что ваш проект Google Cloud настроен для маршрутизации крупногабаритных транспортных средств.
Если ваша организация использует отдельные проекты Google Cloud для бэкэнд-API маршрутизации и SDK мобильной навигации, свяжитесь с Google для выделения ресурсов для каждого проекта.
2. Настройте генерацию маршрутов на бэкэнде и получите токен маршрута.
Перед началом навигации на устройстве ваш сервер должен сгенерировать маршрут для грузовика и получить routeToken , используя один из следующих API:
- API маршрутов : Рекомендуется для расчета маршрутов для отдельных грузовиков между пунктами отправления и назначения. Инструкции по настройке см. в разделе «Генерация маршрутов и расчетного времени прибытия для крупногабаритных транспортных средств» .
- API оптимизации маршрутов : Рекомендуется для оптимизации маршрутов с несколькими остановками в рамках всего автопарка. Для получения дополнительной информации см. руководство по маршрутизации крупногабаритных транспортных средств с помощью API оптимизации маршрутов .
В вашем запросе к бэкэнду необходимо указать travelMode: TRUCK а также физические характеристики транспортного средства (высота, ширина, длина, вес, количество осей и перевозка опасных грузов). API маршрутизации возвращает routeToken в ответе, который ваш бэкэнд-сервер передает в ваше мобильное приложение.
3. Соответствие минимальным требованиям к SDK и системе.
Ваше приложение должно использовать минимально необходимую версию Navigation SDK 5.4.0 или более позднюю.Кроме того, ваш проект должен соответствовать стандартным требованиям к настройке Navigation SDK .
Ограничения и оперативные рекомендации
Прежде чем начать, обратите внимание на следующие ограничения и правила эксплуатации:
- Географическая доступность : Маршрутизация для крупногабаритных транспортных средств доступна на территории 48 континентальных штатов США (общедоступно) и Японии (экспериментально). Она недоступна на Аляске, Гавайях и территориях США.
- Рекомендации для водителей и правила безопасности : Водители не должны полагаться исключительно на маршруты, возвращаемые навигационным SDK, как на безопасные или законные. Маршруты могут быть непригодны для транспортного средства во всех дорожных условиях, и следование по ним может подвергнуть водителей опасностям, таким как низкий дорожный просвет или дороги с ограничениями по весу. Водители всегда должны сохранять бдительность и соблюдать установленные дорожные знаки и местные правила.
- Маршруты с «максимальными усилиями» : Если API маршрутизации не может найти маршрут, полностью соответствующий ограничениям для транспортных средств, он возвращает маршрут с «максимальными усилиями», который все же может проходить через ограниченные участки. Например, API маршрутов устанавливает флаг
routeRestrictionsPartiallyIgnoredв своем ответе. При навигации по таким маршрутам SDK навигации отображает всплывающие подсказки, чтобы выделить соответствующие ограничения. В таких случаях тщательно планируйте маршруты и не используйте отмеченный маршрут в качестве единственного источника достоверной информации для планирования или навигации. - Неподдерживаемые функции : Маршрутизация крупногабаритных транспортных средств не поддерживает следующие функции:
- Цены на проезд по платным дорогам для грузовиков
- Ограничения скорости, специфичные для грузовых автомобилей или тяжелых транспортных средств.
- Маршрутизация радиоактивных опасных материалов
- Ограничения использования : Запросы к Navigation SDK обрабатываются в соответствии со стандартными ограничениями использования и квотами. Для получения дополнительной информации см. раздел «Использование и выставление счетов» .
Отображение пользовательского интерфейса, специфичного для грузовиков (вывод маршрута).
Навигационный SDK автоматически отображает на карте визуальные предупреждения, называемые выносками маршрута , чтобы предупредить водителей о предстоящих ограничениях для грузовых автомобилей. Выноски появляются для ограничений, которые действуют на запланированном маршруте, но не отображаются на других близлежащих дорогах.
В состав Navigation SDK входят ссылки на следующие ограничения:
| Ограничение | Значок выноски и текст | Условия для демонстрации |
|---|---|---|
| Высота | ![]() Желтый цвет означает предупреждение: ваш автомобиль приближается к максимально допустимой высоте. ![]() Красный цвет означает, что высота вашего транспортного средства превышает максимально допустимую. | Желтый индикатор загорается, когда высота транспортного средства приближается к допустимому значению. ![]() Красным цветом обозначается маршрут, если он не соответствует требованиям и нарушает ограничения по высоте. ![]() |
| Масса | ![]() | Красный индикатор загорается, когда вес транспортного средства превышает допустимый предел на дороге. ![]() |
| Грузовики запрещены | ![]() | Красная индикация появляется при движении по участку дороги с ограничением движения для коммерческих грузовиков. ![]() |
| Опасные грузы | ![]() | Красным цветом обозначается сообщение, если перевозка опасных грузов транспортным средством запрещена на данном участке дороги. ![]() |
Как работают маршрутные токены
routeToken — это зашифрованный снимок маршрута, созданный системой маршрутизации Google. Он содержит информацию о запланированной геометрии маршрута, а также о физических размерах транспортного средства и профиле ограничений.
Рабочий процесс состоит из следующих шагов:
- Запрос маршрута : Ваш бэкэнд-сервер запрашивает маршрут для грузовиков у API маршрутов (или API оптимизации маршрутов ).
- Получение токена : API маршрутизации вычисляет соответствующий маршрут и возвращает
routeTokenна ваш бэкэнд-сервер. - Токен пересылки : Ваш бэкэнд-сервер передает
routeTokenи координаты пункта назначения в ваше мобильное приложение . - Передача в SDK : Мобильное приложение передает
routeTokenв SDK навигации . - Начальные указания : SDK навигации обрабатывает все аспекты пошаговой навигации , включая отображение маршрутных подсказок и динамическое изменение маршрута в соответствии с ограничениями транспортного средства.
Динамические перерасчеты и перенаправление маршрута
В процессе активной навигации дорожная обстановка, перекрытие дорог или пропущенные повороты могут привести к отклонению транспортного средства от запланированного маршрута.
При изменении маршрута:
- Навигационный SDK автоматически пересчитывает маршрут до пункта назначения.
- SDK сохраняет атрибуты и размеры транспортного средства, закодированные в исходном
routeToken. - Новый, пересчитанный маршрут позволяет избежать участков с низким клиренсом, мостов с ограничением по весу и дорог, запрещенных для движения коммерческих грузовиков.
Реализация: Запуск поездки, специально предназначенной для грузовика.
Выполните следующие шаги, чтобы инициализировать и запустить пошаговую навигацию с помощью большого маркера маршрута для транспортного средства.
Шаг 1: Получите токен маршрута из вашей серверной части.
Ваше мобильное приложение получает строку routeToken вместе с координатами пункта назначения от вашего бэкэнд-сервера. Подробную информацию о генерации этого токена на вашем сервере см. в разделе «Генерация маршрутов и расчетного времени прибытия для крупногабаритных транспортных средств» в документации по API маршрутов.
Следующий код представляет собой пример токена маршрута:
{
"routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}
Шаг 2: Передайте токен навигатору.
Передайте routeToken и путевые точки назначения в метод setDestinations объекта mapView.navigator .
При настройке путевых точек и передаче токена маршрута следует учитывать следующие моменты:
- Требование соответствия пункта назначения : Координаты пункта назначения, передаваемые в
setDestinationsдолжны совпадать с координатами пункта назначения, использованными при генерацииrouteToken. Указание другого пункта назначения приведет к ошибке. - Маршрутизация по обочине дороги : Крупногабаритные коммерческие транспортные средства не могут легко развернуться на узких улицах. Чтобы гарантировать, что грузовик подъедет к месту назначения по правильной стороне дороги, установите параметр
preferSameSideOfRoad = trueдля ваших путевых точек. - Остановки транспортного средства : Чтобы направить грузовик в подходящее место для остановки или разгрузки, установите для путевых точек параметр
vehicleStopover = true. - Точки навигации : Если в пункте назначения есть обозначенный грузовой въезд или погрузочная площадка, укажите его с помощью жетона точки навигации .
Шаг 3: Проверьте статус маршрута и начните навигацию.
Оцените значение GMSRouteStatus , возвращаемое в функции обратного вызова setDestinations . Когда статус станет .OK ( GMSRouteStatusOK ), установите isGuidanceActive = true ( guidanceActive = YES ), чтобы начать активную пошаговую навигацию.
Пример кода
Передайте токен маршрута в 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: {...})
Встроенные в автомобиль дисплеи
С помощью приложения Navigation for CarPlay вы можете вывести большое окно навигации автомобиля на экраны, встроенные в приборную панель.Следующие шаги
- Изменение интерфейса навигации : настройка встроенных элементов управления и визуальных элементов, таких как компас, кнопка центрирования и ракурс камеры.
- Отслеживание навигационных событий : обработка обновлений навигации и событий жизненного цикла, таких как ход выполнения маршрута, изменения расчетного времени прибытия и изменение маршрута.









