Как изменить настройки маршрутизации

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

Более короткий – это самый короткий из оптимальных маршрутов, рассчитанных на основе нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно самым коротким, поскольку такой вариант может быть неудобным. Например, если самый короткий маршрут составляет 10 км и занимает 50 минут, а другой маршрут – 15 км, но занимает всего 20 минут, то второй вариант является оптимальным, поскольку тратить 30 минут, чтобы сократить путь на 5 км, нецелесообразно.

После того как вы зададите стратегию маршрутизации для поездки, она не изменится до завершения поездки. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо очистить пункты назначения и сбросить их, используя новую стратегию маршрутизации.

Получение сведений о маршруте

Чтобы определить, какая стратегия маршрута является оптимальной для данной путевой точки, вызовите getRouteInfoForDestination(), чтобы получить сведения о маршруте как для лучшего маршрута по умолчанию, так и для абсолютно более короткого маршрута. В частности, указывается продолжительность поездки и расстояние до путевой точки назначения.

Эти сведения поступают из GMSNavigationRouteInfo в обратном вызове.

Пример

В следующем примере кода показано, как получить сведения о маршруте для каждой из двух стратегий маршрутизации.

Swift

let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
                                      routingOptions: routingOptions) { routeInfo in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions =
    [[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
                   withRoutingOptions:routingOptions
                             callback:^(GMSNavigationRouteInfo *routeInfo){...}];

Как настроить стратегию маршрутизации

Вы можете настроить стратегию маршрутизации с помощью GMSNavigationRoutingOptions и задать routingStrategy при вызове setDestinations().

routingStrategy принимает одно из следующих перечисляемых значений:

Перечисляемое значениеОписание
GMSNavigationRoutingStrategyDefaultBest Маршруты ранжируются по модели стоимости по умолчанию Navigation SDK. Это стратегия маршрутизации по умолчанию.
GMSNavigationRoutingStrategyShorter Ранжирует маршруты по расстоянию. Маршрут с самым высоким рейтингом является самым коротким из возвращенных.

Пример

В примере кода ниже показано, как задать стратегию прокладки более короткого маршрута.

Swift

let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];

Маршруты с паромами

По умолчанию Navigation SDK для iOS исключает маршруты, включающие паромы. Если вы хотите, чтобы в маршрутах учитывались паромы, задайте для параметра avoidsFerries значение false.

Пример

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

Формат выноски маршрута.

При выборе стратегии "Более короткий маршрут" на выносках вдоль маршрута показывается расстояние. Но вы можете использовать уточнения с расчетным временем прибытия.

Как настроить формат выноски маршрута

Вы можете изменить формат выноски маршрута, задав routeCalloutFormat в GMSMapView. routeCalloutFormat принимает одно из следующих перечисляемых значений:

Перечисляемое значениеОписание
GMSNavigationRouteCalloutFormatDefault Показывает оставшееся время при использовании стратегии маршрутизации по умолчанию. Показывает оставшееся расстояние при использовании стратегии маршрутизации "Более короткий маршрут".
GMSNavigationRouteCalloutFormatTime Показывает оставшееся время.
GMSNavigationRouteCalloutFormatDistance Показывает оставшееся расстояние.

Пример

В примере кода ниже показано, как настроить формат выноски маршрута.

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;