Расчеты маршрута (включая изменение маршрута) возвращают маршрут, навигация по которому занимает наименьшее количество времени, в качестве наилучшего маршрута по умолчанию . Но вы можете изменить стратегию маршрутизации, чтобы вместо нее возвращался более короткий из альтернативных маршрутов.
Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов, основанных на нашей модели затрат по умолчанию. Более короткий маршрут может быть не самым коротким, поскольку этот вариант может оказаться плохой альтернативой. Например, если самый короткий маршрут составляет 10 км и на его прохождение уходит 50 минут, а другой маршрут составляет 15 км, но навигация занимает всего 20 минут, то второй вариант оптимален, поскольку тратить 30 минут на сокращение пяти км — это не лучший вариант. хороший компромисс.
После того как вы установите стратегию маршрутизации для поездки, она не изменится до ее завершения. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо очистить пункты назначения и снова сбросить их с использованием новой стратегии маршрутизации.
Получение деталей маршрута
Чтобы определить, какая стратегия маршрута является оптимальным выбором для данной путевой точки, вызовите getRouteInfoForDestination()
, чтобы получить сведения о маршруте как для лучшего маршрута по умолчанию, так и для абсолютно более короткого маршрута. Подробная информация включает продолжительность и расстояние до маршрутной точки назначения.
Эти сведения поступают из GMSNavigationRouteInfo
в обратном вызове.
Пример
В следующем примере кода показано, как получить сведения о маршруте для каждой из двух стратегий маршрутизации.
Быстрый
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
Цель-C
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
Настройка стратегии маршрутизации
Вы можете настроить стратегию маршрутизации, используя GMSNavigationRoutingOptions
и задав routingStrategy
при вызове setDestinations()
.
routingStrategy
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Ранжирует маршруты по модели затрат Navigation SDK по умолчанию. Это стратегия маршрутизации по умолчанию. |
GMSNavigationМаршрутизацияСтратегияКороткий | Ранжирует маршруты по расстоянию. Маршрут с самым высоким рейтингом — самый короткий из возвращенных. |
Пример
В следующем примере кода показано, как установить стратегию маршрутизации более короткого маршрута.
Быстрый
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
Цель-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
Цель-C
self.mapView.navigator.avoidsFerries = NO
Формат обозначения маршрута
При использовании стратегии маршрутизации по более короткому маршруту выноски вдоль маршрута отображают подробную информацию о расстоянии. Но вместо этого вы можете использовать уточнения ETA.
Настройка формата обозначения маршрута
Вы можете изменить формат выноски маршрута, установив routeCalloutFormat
в GMSMapView
. routeCalloutFormat
принимает одно из следующих значений перечисления:
Значение перечисления | Описание |
---|---|
GMSNavigationRouteCalloutFormatDefault | Отображает оставшееся время при использовании стратегии маршрутизации наилучшего маршрута по умолчанию. Отображает оставшееся расстояние при использовании стратегии прокладки более короткого маршрута. |
GMSNavigationRouteCalloutFormatTime | Отображает оставшееся время. |
GMSNavigationRouteCalloutFormatDistance | DОтображает оставшееся расстояние. |
Пример
В следующем примере кода показано, как настроить формат обозначения маршрута.
Быстрый
self.mapView.routeCalloutFormat = .time
Цель-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;