Маршрут к точкам навигации

SDK навигации для Android предлагает расширенные возможности указания путевых точек, или точек навигации, обеспечивая более точную маршрутизацию и более удобное прибытие, особенно для пунктов назначения с несколькими входами или определенными точками навигации. Вы можете прокладывать маршруты к точным местоположениям, используя navigationPointToken — строку, кодирующую местоположение и дополнительный контекст маршрута. Вы также можете комбинировать координаты широты и долготы с идентификатором места (Place ID) для получения дополнительного контекста.

Фон

До версии 7.4 можно было задать Waypoint используя либо координаты широты и долготы , либо идентификатор места. Хотя это иногда эффективно, построение маршрута исключительно по широте и долготе может привести к неоптимальным точкам высадки или посадки, особенно в больших помещениях, парках или зданиях с несколькими входами. В результате маршрут может автоматически привязаться к ближайшему участку дороги, что может оказаться не самой удобной или правильной точкой навигации.

Расширенные возможности настройки путевых точек решают эту проблему, предоставляя больше контекстной информации.

Используйте токен точки навигации

Для наиболее точного построения маршрута к конкретным точкам навигации, таким как входы, погрузочные площадки или обозначенные зоны погрузки/разгрузки, можно использовать navigationPointToken . Этот токен получается путем вызова метода destinations API геокодирования . Он представляет собой конкретную, маршрутизируемую точку навигации, связанную с определенным местом.

Чтобы указать токен точки навигации:

  1. Получите объект navigationPointToken из метода Destinations ответа API геокодирования .
  2. Создайте 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()

Используйте маркеры навигационных точек и маркеры маршрута.

Вы можете получить токен точки навигации через API геокодирования, получить токен маршрута через API маршрутов, а затем передать как токен точки навигации, так и токен маршрута в SDK навигации. Это полезно в таких сценариях, как сервисы совместных поездок или доставки, где вы используете API маршрутов для расчета стоимости поездки и вам нужна точность, соответствующая токену точки навигации.

Токен маршрута смещает выбор маршрута, осуществляемый навигационным SDK, в сторону маршрута, использованного для расчета стоимости. Это снижает риск использования более длинных или коротких маршрутов для поездки, что может привести к «ценовым шокам».

Дополнительную информацию о задании местоположения с помощью токена точки навигации и создании токена маршрута см. в документации по API маршрутов. См. раздел «Планирование маршрута» , чтобы узнать, как спланировать маршрут с помощью токена маршрута.

На этой диаграмме показано, как приложение для заказа такси или доставки будет использовать вместе токены навигационных точек и токены маршрута:

Схема вариантов использования сервисов совместных поездок или доставки.
Схема сценария использования сервиса совместных поездок или доставки.

Объедините идентификатор места, широту и долготу.

Начиная с версии 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 , а улучшения, специфичные для данного места, будут недоступны.

Сводка допустимых конфигураций путевых точек

Метод setLatLng() setPlaceIdString() setNavigationPointToken() Поведение маршрутизации Выделение достопримечательностей
Только координаты широты/долготы набор отсутствующий отсутствующий Маршруты к участку дороги, ближайшему к заданным координатам. Доказано, что пункт назначения можно определить с высокой степенью достоверности.
Только удостоверение личности. отсутствующий набор отсутствующий Маршруты к точке навигации по умолчанию для идентификатора места. Исходный идентификатор места
только токен точки навигации отсутствующий отсутствующий набор Маршруты к точной точке навигации, представленной этим маркером. Исходный пункт назначения определяется в методе `from original destinations` запроса API геокодирования.
Координаты широты/долготы и идентификатор места в совокупности. набор набор отсутствующий Маршруты к участку дороги, ближайшему к заданным координатам. Информация предоставляется на основе идентификатора места (Place ID), хотя и не отображается, если идентификатор места находится слишком далеко от координат широты/долготы.