경유지 관리

이 문서에서는 다음 두 가지 기능을 사용하여 앱의 중간 지점 환경설정을 관리하는 방법을 설명합니다.

  • 도로 측면 경로 환경설정
  • 경유

도로 측면 경로 설정 환경설정

기본적으로 iOS용 Navigation SDK는 중간 지점까지의 가장 빠른 경로를 찾지만, 사용자가 원하는 도로 쪽(예: 차량 공유 운전자의 고객이 기다리는 도로 쪽)에 도착할 것이라고 보장할 수는 없습니다. 도로변 라우팅 환경설정 기능을 사용하면 차량이 도로의 올바른 쪽에 도착하도록 할 수 있습니다.

작동 방식

정류장의 웨이포인트를 만들 때 도로의 특정 측면에 도착하도록 환경설정을 설정합니다. 다음 두 가지 방법 중 하나로 환경설정을 지정할 수 있습니다.

도로의 같은 쪽 선호

웨이포인트의 지리적 좌표를 제공한 다음 가장 가까운 인도에 스냅된 웨이포인트와 같은 도로변에 도착하는 것을 선호함을 나타내는 플래그 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;

Navigation SDK는 경유지와 가장 가까운 도로 구간을 선택합니다. 이 도로 구간의 차선 방향은 경유지가 있는 도로 측면과 +/- 55도 이내로 일치합니다.

경유 환경설정 지정

특정 장소 (예: 높은 지역, 페리, 지하 위치, 접근이 제한된 기타 지역)에서는 사용자가 안전하게 정차할 수 없습니다. 중간 기착 기능은 사용자가 중간 기착하기에 적합하지 않은 위치에 있는 경우 중간 지점을 근처 장소로 재배치합니다. vehicleStopoverYES로 설정하면 경로가 계산될 때 대체 위치를 사용할 수 있는 경우 경유지가 자동으로 재배치됩니다.

작동 방식

중간 기착점에 대한 중간 경로를 만들 때 중간 기착점의 환경설정을 설정합니다. 이렇게 하려면 다음 예와 같이 GMSNavigationMutableWaypoint에서 경유지에 대한 환경설정을 설정합니다.

Swift

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){...}];