В этом документе описывается, как можно управлять настройками точек маршрута для вашего приложения с помощью двух функций:
- Настройки маршрутизации по обочине дороги
- Остановка в пути
Установить предпочтение при выборе стороны дороги
По умолчанию Navigation SDK для iOS находит кратчайший маршрут к промежуточной точке, однако это не гарантирует, что пользователь прибудет на нужную сторону дороги, например, на ту, где его ждёт клиент водителя сервиса совместных поездок. Функция выбора стороны дороги позволяет гарантировать, что автомобиль прибудет на нужную сторону дороги.
Как это работает
При создании путевой точки для этой остановки вы указываете предпочтительный вариант прибытия на определённую сторону дороги. Вы можете указать предпочтительный вариант одним из двух способов.
Предпочитаю ту же сторону дороги
Вы указываете географические координаты точки маршрута, а затем устанавливаете флаг preferSameSideOfRoad
, который указывает, что вы предпочитаете прибыть на ту же сторону дороги, что и точка маршрута, то есть привязанную к ближайшему тротуару.
(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
title:(NSString *)title
preferSameSideOfRoad:(BOOL)preferSameSideOfRoad;
Установите заголовок прибытия
Вы указываете географические координаты точки маршрута, а затем указываете направление прибытия preferredSegmentHeading
, которое соответствует направлению транспортного потока на той же стороне дороги, что и пункт назначения.
(nullable instancetype)initWithLocation:(CLLocationCoordinate2D)location
title:(NSString *)title
preferredSegmentHeading:(int32_t)preferredSegmentHeading;
Навигационный SDK выбирает ближайший к путевой точке сегмент дороги, направление полосы которого совпадает (в пределах +/- 55 градусов) с той стороной дороги, на которой находится путевая точка.
Установить предпочтение остановке
В некоторых местах пользователи не могут безопасно остановиться (например, на возвышенностях, паромах, в подземных помещениях и других зонах с ограниченным доступом). Функция Stopover переносит путевую точку в ближайшее место, если её местоположение не подходит для остановки. Если для параметра vehicleStopover
задано значение YES
, путевая точка автоматически переносится при расчёте маршрута, если доступно альтернативное местоположение.
Как это работает
Настройки остановочного пункта устанавливаются при создании путевой точки для этой остановки. Для этого задайте настройки остановочного пункта для объекта GMSNavigationMutableWaypoint
, как показано в следующем примере:
Быстрый
let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20) let waypoint = GMSNavigationMutableWaypoint(location: location, title: "waypoint from location")! waypoint.vehicleStopover = true mapView.navigator?.setDestinations([waypoint], routingOptions: routingOptions, callback: {...})
Objective-C
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20); GMSNavigationMutableWaypoint *waypoint = [[GMSNavigationMutableWaypoint alloc] initWithLocation:location title:@"waypoint from location"]; waypoint.vehicleStopover = YES; [_mapView.navigator setDestinations:@[waypoint1] routingOptions:routingOptions callback:^(GMSRouteStatus routeStatus){...}];