SDK навигации для Android предлагает расширенные возможности указания путевых точек, обеспечивая более точную маршрутизацию и более удобное прибытие, особенно для пунктов назначения с несколькими входами или конкретными точками доступа. Вы можете прокладывать маршруты к точным местоположениям, используя navigationPointToken или комбинируя координаты широты и долготы с идентификатором места (Place ID) для дополнительного контекста. Функция выделения пунктов назначения будет по-прежнему использоваться, если это применимо.
Фон
До версии 7.4 можно было задать Waypoint используя либо координаты широты и долготы , либо идентификатор места. Хотя это эффективно для большинства случаев, маршрутизация только по широте и долготе иногда может приводить к неоптимальным точкам высадки или посадки, особенно в больших помещениях, парках или зданиях с несколькими входами. В результате маршрут может привязаться к ближайшему участку дороги, который может оказаться не самым удобным или правильным местом доступа.
Расширенные возможности настройки путевых точек решают эту проблему, предоставляя больше контекстной информации.
Объедините идентификатор места и координаты широты и долготы.
Начиная с версии 7.4, при создании Waypoint можно указать как идентификатор места (Place ID), так и координаты широты и долготы. Этот метод полезен, когда необходимо указать точную точку (широту/долготу), сохраняя при этом контекст всего места (идентификатор места). Это позволяет 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, а улучшения, специфичные для данного места, будут недоступны.
Используйте токен точки навигации.
Для наиболее точного построения маршрута к конкретным точкам доступа, таким как входы, погрузочные площадки или обозначенные зоны погрузки/разгрузки, можно использовать navigationPointToken . Этот токен получается путем вызова метода destinations API геокодирования . Он представляет собой конкретную, маршрутизируемую точку навигации, связанную с определенным местом.
Чтобы указать токен точки навигации:
- Получите объект
navigationPointTokenиз метода Destinations ответа API геокодирования . - Создайте
Waypointиспользуя методsetNavigationPointToken()в конструкторе.
Примечание: При использовании setNavigationPointToken() нельзя одновременно использовать setLatLng() или setPlaceIdString() . Эти методы взаимоисключающие с 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()
Сводка допустимых конфигураций путевых точек
| Метод | setLatLng() | setPlaceIdString() | setNavigationPointToken() | Поведение маршрутизации | Выделение достопримечательностей |
|---|---|---|---|---|---|
| Только LatLng | набор | отсутствующий | отсутствующий | Маршруты к участку дороги, ближайшему к заданным координатам. | Не показано |
| Только удостоверение личности. | отсутствующий | набор | отсутствующий | Маршруты к точке доступа по умолчанию для идентификатора места. | Из PlaceID |
| Только токен точки навигации | отсутствующий | отсутствующий | набор | Маршруты к конкретной точке доступа, представленной токеном. | Исходный пункт назначения определяется в методе `from original destinations` запроса API геокодирования. |
| Идентификаторы широты и местоположения объединены. | набор | набор | отсутствующий | Маршруты к участку дороги, ближайшему к заданным координатам. | Исходя из PlaceID, хотя это не отображается, если PlaceID находится слишком далеко от LatLng. |