Расчеты маршрута (включая перенаправление) возвращают маршрут, навигация по которому занимает наименьшее время, как лучший маршрут по умолчанию . Но вы можете изменить стратегию маршрутизации так, чтобы вместо этого возвращался более короткий из альтернативных маршрутов.
Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов на основе нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно самым коротким маршрутом, так как этот вариант может быть плохой альтернативой. Например, если абсолютно самый короткий маршрут составляет 10 км и занимает 50 минут на прохождение, а другой маршрут составляет 15 км, но занимает всего 20 минут на прохождение, то второй вариант является оптимальным, так как трата 30 минут на сокращение пяти км — не лучший компромисс.
После того, как вы установили стратегию маршрутизации для поездки, она не изменится, пока поездка не завершится. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо очистить пункты назначения и заново настроить их с новой стратегией маршрутизации.
Получение информации о маршруте
Чтобы определить, какая стратегия маршрута является оптимальным выбором для заданной точки маршрута, вызовите getRouteInfo()
чтобы получить сведения о маршруте как для лучшего маршрута по умолчанию, так и для абсолютно более короткого маршрута. Сведения включают длительность и расстояние до точки маршрута назначения.
Эти данные берутся из RouteInfo
и возвращаются в ListenableResultFuture
.
Пример
В следующем примере кода показано, как получить сведения о маршруте для каждой из двух стратегий маршрутизации.
ListenableResultFuture<RouteInfo> routeInfoFuture =
navigator.getRouteInfo(waypoint, routingOptions);
Установка стратегии маршрутизации
Вы можете настроить стратегию маршрутизации, установив RoutingOptions.routingStrategy
при вызове setDestinations()
.
RoutingOptions.routingStrategy
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
Стратегия маршрутизации.DEFAULT_BEST | Ранжирует маршруты по модели стоимости Navigation SDK по умолчанию. Это стратегия маршрутизации по умолчанию. |
RoutingStrategy.КОРОТКО | Ранжирует маршруты по расстоянию. Маршрут с самым высоким рейтингом — самый короткий из возвращенных. |
Пример
В следующем примере кода показано, как задать предпочтение более короткому маршруту.
RoutingOptions routingOptions = new RoutingOptions();
routingOptions.routingStrategy(RoutingStrategy.SHORTER);
navigator.setDestinations(destinations, routingOptions, displayOptions);
Маршруты, включающие паромы
По умолчанию NavSDK исключает маршруты, включающие паромы. Если вы предпочитаете включать варианты паромов в свои маршруты, вы можете настроить этот параметр маршрутизации, чтобы отобразить поездку на паромных сегментах, установив для параметра avoidFerries
значение false
.
Пример
RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);
Формат обозначения маршрута
При выборе более короткого маршрута выноски вдоль маршрута отображают сведения о расстоянии. Но вместо этого вы можете использовать выноски ETA.
Настройка формата выноски маршрута
Вы можете изменить формат выноски маршрута, вызвав setRouteCalloutInfoFormat
в NavigationView
(или в NavigationFragment
). setRouteCalloutInfoFormat
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
RouteCalloutInfoFormat.DEFAULT | Отображает оставшееся время при использовании стратегии маршрутизации по лучшему маршруту по умолчанию. Отображает оставшееся расстояние при использовании стратегии маршрутизации по более короткому маршруту. |
RouteCalloutInfoFormat.TIME | Отображает оставшееся время. |
RouteCalloutInfoFormat.DISTANCE | Отображает оставшееся расстояние. |
Пример
В следующем примере кода показано, как настроить формат выноски маршрута.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);