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

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

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

Пример

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

Быстрый

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

Формат обозначения маршрута

В рамках стратегии маршрутизации по более короткому маршруту выноски вдоль маршрута отображают детали расстояния. Но вместо этого вы можете использовать выноски ETA.

Настройка формата выноски маршрута

Вы можете изменить формат выноски маршрута, установив routeCalloutFormat в GMSMapView . routeCalloutFormat принимает одно из следующих значений перечисления:

Значение перечисления Описание
GMSNavigationRouteCalloutFormatDefault Отображает оставшееся время при использовании стратегии маршрутизации по лучшему маршруту по умолчанию. Отображает оставшееся расстояние при использовании стратегии маршрутизации по более короткому маршруту
GMSNavigationRouteCalloutFormatTime Отображает оставшееся время.
GMSNavigationRouteCalloutFormatDistance DОтображает оставшееся расстояние.

Пример

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

Быстрый

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;