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

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

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