Расчеты маршрута (включая изменение маршрута) возвращают маршрут, навигация по которому занимает наименьшее количество времени, в качестве наилучшего маршрута по умолчанию . Но вы можете изменить стратегию маршрутизации, чтобы вместо нее возвращался более короткий из альтернативных маршрутов.
Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов, основанных на нашей модели затрат по умолчанию. Более короткий маршрут может быть не самым коротким, поскольку этот вариант может оказаться плохой альтернативой. Например, если самый короткий маршрут составляет 10 км и на его прохождение уходит 50 минут, а другой маршрут составляет 15 км, но навигация занимает всего 20 минут, то второй вариант оптимален, поскольку тратить 30 минут на сокращение пяти км — это не лучший вариант. хороший компромисс.
После того как вы установите стратегию маршрутизации для поездки, она не изменится до ее завершения. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо очистить пункты назначения и снова сбросить их с использованием новой стратегии маршрутизации.
Получение деталей маршрута
Чтобы определить, какая стратегия маршрута является оптимальным выбором для данной путевой точки, вызовите getRouteInfo()
чтобы получить сведения о маршруте как для лучшего маршрута по умолчанию, так и для абсолютно более короткого маршрута. Подробная информация включает продолжительность и расстояние до пункта назначения.
Эти сведения поступают из RouteInfo
и возвращаются в ListenableResultFuture
.
Пример
В следующем примере кода показано, как получить сведения о маршруте для каждой из двух стратегий маршрутизации.
ListenableResultFuture<RouteInfo> routeInfoFuture =
navigator.getRouteInfo(waypoint, routingOptions);
Настройка стратегии маршрутизации
Вы можете настроить стратегию маршрутизации, установив RoutingOptions.routingStrategy
при вызове setDestinations()
.
RoutingOptions.routingStrategy
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
RoutingStrategy.DEFAULT_BEST | Ранжирует маршруты по модели затрат Navigation SDK по умолчанию. Это стратегия маршрутизации по умолчанию. |
RoutingStrategy.SHORTER | Ранжирует маршруты по расстоянию. Маршрут с самым высоким рейтингом — самый короткий из возвращенных. |
Пример
В следующем примере кода показано, как установить предпочтение более короткого маршрута.
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);