Настройка предпочтений маршрутизации

Расчёты маршрута (включая перенаправление) возвращают маршрут, требующий наименьшего времени на прохождение, в качестве наилучшего маршрута по умолчанию . Однако вы можете изменить стратегию маршрутизации так, чтобы возвращался более короткий из альтернативных маршрутов.

Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов, основанных на нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно кратчайшим, поскольку этот вариант может быть плохой альтернативой. Например, если самый короткий маршрут составляет 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);