Расчёты маршрута (включая перенаправление) возвращают маршрут, требующий наименьшего времени на прохождение, в качестве наилучшего маршрута по умолчанию . Однако вы можете изменить стратегию маршрутизации так, чтобы возвращался более короткий из альтернативных маршрутов.
Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов, основанных на нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно кратчайшим, поскольку он может быть плохой альтернативой. Например, если самый короткий маршрут составляет 10 км и занимает 50 минут на прохождение, а другой маршрут составляет 15 км, но занимает всего 20 минут на прохождение, то второй вариант является оптимальным, поскольку 30 минут на сокращение пяти км — не лучший компромисс.
После настройки стратегии маршрутизации для поездки она не изменится до её завершения. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо удалить пункты назначения и заново настроить их с новой стратегией маршрутизации.
Получение информации о маршруте
Чтобы определить оптимальную стратегию маршрута для заданной точки маршрута, вызовите метод getRouteInfoForDestination()
чтобы получить сведения как о лучшем маршруте по умолчанию, так и о самом коротком маршруте. Информация включает длительность и расстояние до точки назначения.
Эти данные берутся из GMSNavigationRouteInfo
в обратном вызове.
Пример
В следующем примере кода показано, как получить сведения о маршруте для каждой из двух стратегий маршрутизации.
Быстрый
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 | Маршруты ранжируются по расстоянию. Маршрут с наивысшим рейтингом — самый короткий из найденных. |
Пример
В следующем примере кода показано, как настроить стратегию маршрутизации по более короткому маршруту.
Быстрый
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
.
Пример
Быстрый
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Формат обозначения маршрута
При использовании стратегии маршрутизации по более короткому маршруту выноски вдоль маршрута отображают информацию о расстоянии. Однако вместо этого можно использовать выноски с расчетным временем прибытия.
Настройка формата обозначения маршрута
Вы можете изменить формат обозначения маршрута, установив routeCalloutFormat
в GMSMapView
. routeCalloutFormat
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
GMSNavigationRouteCalloutFormatDefault | Отображает оставшееся время при использовании оптимального маршрута по умолчанию. Отображает оставшееся расстояние при использовании более короткого маршрута. |
GMSNavigationRouteCalloutFormatTime | Отображает оставшееся время. |
GMSNavigationRouteCalloutFormatDistance | DОтображает оставшееся расстояние. |
Пример
В следующем примере кода показано, как настроить формат обозначения маршрута.
Быстрый
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;