Настройка параметров маршрутизации

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

Термин «короче» означает маршрут, который является самым коротким среди оптимальных маршрутов, основанных на нашей модели затрат по умолчанию. Более короткий маршрут может быть не самым коротким, поскольку этот вариант может оказаться плохой альтернативой. Например, если самый короткий маршрут составляет 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 принимает одно из следующих значений перечисления:

Значение перечисления Описание
ГМСНавигатионРоутКалаутФорматДефолт Отображает оставшееся время при использовании стратегии маршрутизации наилучшего маршрута по умолчанию. Отображает оставшееся расстояние при использовании стратегии прокладки более короткого маршрута.
GMSNavigationRouteCalloutFormatTime Отображает оставшееся время.
GMSNavigationRouteCalloutFormatDistance DОтображает оставшееся расстояние.

Пример

В следующем примере кода показано, как настроить формат обозначения маршрута.

Быстрый

self.mapView.routeCalloutFormat = .time

Цель-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;