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

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

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

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

Как получить информацию о маршруте

Чтобы определить, какая стратегия маршрута лучше всего подходит для определенной путевой точки, вызовите функцию 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 D – показывает оставшееся расстояние.

Пример

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

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;