При расчете маршрутов (в том числе при перерасчете) в качестве лучшего маршрута по умолчанию возвращается маршрут, который занимает меньше всего времени. Но вы можете изменить стратегию маршрутизации, чтобы вместо этого возвращался более короткий из альтернативных маршрутов.
Термин короче означает, что маршрут является самым коротким среди оптимальных маршрутов на основе нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно самым коротким, поскольку такой вариант может быть не самым лучшим. Например, если самый короткий маршрут составляет 10 км и занимает 50 минут, а другой маршрут – 15 км, но занимает всего 20 минут, то второй вариант является оптимальным, поскольку тратить 30 минут, чтобы сократить путь на 5 км, нецелесообразно.
После того как вы зададите стратегию маршрутизации для рейса, она не изменится до его завершения. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо очистить пункты назначения и сбросить их, используя новую стратегию маршрутизации.
Как настроить стратегию маршрутизации
Вы можете настроить стратегию маршрутизации, задав 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);
Маршруты с паромными переправами
По умолчанию Navigation SDK исключает маршруты, включающие паромы. Если вы хотите, чтобы в маршруты включались паромы, задайте для параметра avoidFerries значение false.
Пример
RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);
Формат выноски маршрута
Если выбран более короткий маршрут, на выносках вдоль маршрута показывается расстояние. Но вы можете использовать уточнения с расчетным временем прибытия.
Как настроить формат выноски маршрута
Вы можете изменить формат выноски маршрута, вызвав setRouteCalloutInfoFormat в NavigationView (или в NavigationFragment). setRouteCalloutInfoFormat принимает одно из следующих перечисляемых значений:
| Перечисляемое значение | Описание |
|---|---|
| RouteCalloutInfoFormat.DEFAULT | Показывает оставшееся время при использовании стратегии маршрутизации по умолчанию. Показывает оставшееся расстояние при использовании стратегии маршрутизации по более короткому маршруту. |
| RouteCalloutInfoFormat.TIME | Показывает оставшееся время. |
| RouteCalloutInfoFormat.DISTANCE | Показывает оставшееся расстояние. |
Пример
В примере кода ниже показано, как настроить формат выноски маршрута.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);