Navigation SDK для Android предлагает расширенные возможности указания путевых точек, или точек навигации, что позволяет точнее прокладывать маршруты и удобнее прибывать в пункт назначения, особенно если у него несколько входов или определенные точки навигации. Вы можете прокладывать маршруты к точным местоположениям, используя navigationPointToken – строку, в которой закодировано местоположение и дополнительный контекст маршрута. Вы также можете объединить координаты широты и долготы с идентификатором места, чтобы добавить контекст.
Фон
До версии 7.4 вы могли задавать Waypoint, используя координаты широты и долготы или идентификатор места. Хотя иногда это эффективно, маршрутизация исключительно по широте и долготе может привести к неоптимальным точкам высадки или посадки, особенно для больших площадок, парков или зданий с несколькими входами. Результат может быть привязан к ближайшему сегменту дороги, который может не быть наиболее удобной или правильной точкой навигации.
Расширенные параметры путевых точек позволяют решить эту проблему, предоставляя больше контекста.
Как использовать токен точки навигации
Для максимально точной маршрутизации к определенным точкам навигации, таким как входы, погрузочные доки или специальные зоны посадки, вы можете использовать navigationPointToken. Этот токен можно получить, вызвав метод destinations в Geocoding API. Она представляет собой конкретную точку навигации, связанную с местом.
Чтобы указать токен точки навигации, выполните следующие действия:
- Получите
navigationPointTokenиз ответа методаSearchDestinationsGeocoding 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 | Отсутствует | Маршруты до сегмента дороги, ближайшего к заданным координатам. | Из идентификатора места, если он не слишком далеко от координат широты и долготы. |