Navigation SDK для Android предлагает расширенные возможности указания путевых точек, или точек навигации, что позволяет точнее прокладывать маршруты и упрощает прибытие в пункт назначения, особенно если у него несколько входов или определенные точки навигации. Вы можете прокладывать маршруты к точным местоположениям, используя navigationPointToken – строку, в которой закодировано местоположение и дополнительный контекст маршрута. Вы также можете объединить координаты широты и долготы с идентификатором места, чтобы добавить контекст.
Фон
До версии 7.4 вы могли задать Waypoint, используя координаты широты и долготы или идентификатор места. Хотя иногда это эффективно, маршрутизация исключительно по широте и долготе может привести к неоптимальным точкам высадки или посадки, особенно для больших площадок, парков или зданий с несколькими входами. Результат может быть привязан к ближайшему сегменту дороги, который может быть не самым удобным или правильным пунктом навигации.
Расширенные параметры путевых точек позволяют решить эту проблему, предоставляя больше контекста.
Как использовать токен точки навигации
Для максимально точной маршрутизации к определенным точкам навигации, таким как входы, погрузочные доки или специальные зоны посадки, вы можете использовать navigationPointToken. Этот токен можно получить, вызвав метод destinations Geocoding API. Она представляет собой конкретную точку навигации, связанную с местом.
Чтобы указать токен точки навигации, выполните следующие действия:
- Получите
navigationPointTokenиз ответа метода Destinations в Geocoding API. - Создайте объект
Waypointс помощью методаsetNavigationPointToken()в конструкторе.
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
Как использовать токены точек навигации и маршрутов
Вы можете получить токен точки навигации через Geocoding API, а токен маршрута – через Routes API, а затем передать оба токена в Navigation SDK. Это полезно, например, в сервисах доставки или совместных поездок, когда вы используете Routes API для расчета стоимости поездки и вам нужна точность токена навигационной точки.
С помощью токена маршрута Navigation SDK запускает навигацию по тому же маршруту, который вы использовали для расчета цены. Это снижает риск того, что для поездки будут использоваться более длинные или короткие маршруты, что может привести к "ценовым шокам".
Дополнительную информацию о том, как указать местоположение с помощью токена точки навигации и создать токен маршрута, можно найти в документации по Routes API. Чтобы узнать, как спланировать маршрут с помощью токена маршрута, ознакомьтесь с разделом Планирование маршрута.
На этой диаграмме показано, как приложение для совместных поездок или доставки использует токены точек навигации и токены маршрутов:
Использование идентификатора места и координат широты и долготы
Начиная с версии 7.4, при создании Waypoint вы можете указать как идентификатор места, так и координаты широты и долготы. Этот метод полезен, когда вы хотите указать точную точку (широту/долготу), сохраняя при этом контекст всего места (идентификатор места). Это позволяет Navigation SDK предоставлять более подробную информацию о прибытии, выделяя здание пункта назначения или показывая близлежащие достопримечательности, связанные с идентификатором места.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
Примечания
Если вы укажете и placeId, и latlng:
- Маршрут в основном нацелен на указанный
latlng. placeIdиспользуется в качестве контекста, чтобы улучшить работу функции.- Резервный вариант. Если SDK определяет, что предоставленный
placeIdсоответствует объекту, который находится слишком далеко от заданногоlatlng, тоplaceIdбудет игнорироваться. В этом случае маршрут будет проложен только доlatlng, а улучшения, связанные с прибытием в определенное место, будут недоступны.
Сводка допустимых конфигураций путевых точек
| Метод | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Поведение маршрутизации | Выделение целевых страниц |
|---|---|---|---|---|---|
| Только широта и долгота | set | отсутствует | отсутствует | Маршруты до сегмента дороги, ближайшего к заданным координатам. | Показывается, если пункт назначения можно определить с высокой точностью. |
| Только идентификатор места | отсутствует | set | отсутствует | Маршруты к точке навигации по умолчанию для идентификатора места | Идентификатор места отправления |
| Только токен точки навигации | отсутствует | отсутствует | set | Маршруты к точной точке навигации, представленной токеном. | Пункт назначения, указанный в исходном запросе destinations метода Geocoding API. |
| Координаты широты и долготы и идентификатор места | set | set | отсутствует | Маршруты до сегмента дороги, ближайшего к заданным координатам. | Из идентификатора места, если он не слишком далеко от координат широты и долготы. |