Расчёты маршрута (включая перенаправление) возвращают маршрут, требующий наименьшего времени на прохождение, в качестве наилучшего маршрута по умолчанию . Однако вы можете изменить стратегию маршрутизации так, чтобы возвращался более короткий из альтернативных маршрутов.
Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов, основанных на нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно кратчайшим, поскольку этот вариант может быть плохой альтернативой. Например, если самый короткий маршрут составляет 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);
Формат обозначения маршрута
При выборе более короткого маршрута выноски вдоль маршрута отображают информацию о расстоянии. Однако вместо этого вы можете использовать выноски с ориентировочным временем прибытия.
Настройка формата обозначения маршрута
Вы можете изменить формат обозначения маршрута, вызвав setRouteCalloutInfoFormat
в NavigationView
(или в NavigationFragment
). setRouteCalloutInfoFormat
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
RouteCalloutInfoFormat.DEFAULT | Отображает оставшееся время при использовании оптимального маршрута по умолчанию. Отображает оставшееся расстояние при использовании более короткого маршрута. |
RouteCalloutInfoFormat.TIME | Отображает оставшееся время. |
RouteCalloutInfoFormat.DISTANCE | Отображает оставшееся расстояние. |
Пример
В следующем примере кода показано, как настроить формат обозначения маршрута.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);