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