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

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

Термин «более короткий» означает маршрут, который является кратчайшим среди оптимальных маршрутов, исходя из нашей модели стоимости по умолчанию. Более короткий маршрут может не быть абсолютно кратчайшим, поскольку этот вариант может быть плохой альтернативой. Например, если абсолютно кратчайший маршрут составляет 10 км и занимает 50 минут, а другой маршрут составляет 15 км, но занимает всего 20 минут, то второй вариант является оптимальным, поскольку потратить 30 минут на сокращение 5 км — это невыгодный компромисс.

После установки стратегии маршрутизации для поездки она не изменится до ее завершения. Чтобы изменить стратегию маршрутизации для существующей поездки, необходимо очистить пункты назначения и установить их заново с новой стратегией маршрутизации.

Получение информации о маршруте

Чтобы определить, какая стратегия построения маршрута является оптимальной для данной путевой точки, вызовите 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){...}];

Маршруты, включающие паромы

По умолчанию SDK навигации для iOS исключает маршруты, включающие паромы. Если вы предпочитаете включать варианты с паромами в свои маршруты, вы можете изменить этот параметр маршрутизации, чтобы сделать поездку доступной для сегментов с паромами, установив avoidsFerries в значение false .

Пример

Быстрый

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

Формат указания маршрута

При использовании стратегии построения более короткого маршрута, вдоль трассы отображаются подробные сведения о расстоянии. Однако вместо этого можно использовать выноски с расчетным временем прибытия (ETA).

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

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

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

Пример

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

Быстрый

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;