경로 계획하기

앱이 운전자에게 제공하는 경로를 계획해야 하는 경우가 있습니다. Routes API (또는 Routes Preferred API)의 경로 토큰을 사용하면 계획된 경로에 대해 다음 두 가지를 지정할 수 있습니다.

  • 경로의 다중선

  • 경로 목표

다음은 라우팅 목표의 몇 가지 예입니다.

  • 배달 시간 최소화: 음식을 배달하는 비즈니스는 음식 배달에 걸리는 시간을 최소화해야 합니다.

  • 이동 시간 또는 연료 소비 최소화: 물류 비즈니스는 운전자의 효율성을 개선하고 연료 비용을 절감하고자 할 수 있습니다.

  • 목적지까지 시간 최소화: 서비스 디스패치 작업은 운영자가 작업 요청을 받는 데 걸리는 시간을 최소화하는 것이 좋습니다.

  • 비용 절감 및 안전 개선: 차량 공유 업체는 탑승자에게 비용이 적게 드는 경로를 찾고 안전상의 이유로 특정 지역을 제외해야 할 수 있습니다.

경로 토큰을 사용하여 경로를 계획하는 방법에 대한 자세한 내용은 경로 토큰 요청을 참조하세요.

경로 목표에 경로 토큰을 사용하는 이유

Routes 또는 Routes Preferred API의 경로 토큰을 사용하면 제공된 경로를 보다 세부적으로 제어할 수 있습니다.

  • 가능한 경우 Navigation SDK에서 사용할 경로를 미리 계획합니다.

  • Navigation SDK에서 사용할 최적의 경로 선택 Routes API에서 경로를 생성할 때 경로 토큰을 요청하면 생성된 각 경로에 대한 경로 토큰을 가져옵니다. 그런 다음 Navigation SDK에 전달할 때 사용할 경로의 토큰을 선택할 수 있습니다.

  • 예상 도착예정시간과 거리를 포함하여 가격을 미리 예상해 보세요. 실제 비용과 시간은 다를 수 있지만 이 추정을 통해 예상 경로 비용과 실제 경로 비용 간의 격차가 줄어듭니다.

  • 절전 경로 또는 최단 경로와 같은 고급 경로 목표를 지정합니다.

Routes API 경로 토큰의 작동 방식

Routes API 또는 Routes Preferred API로 경로 목표를 사용하여 경로를 계획할 수 있습니다. Routes API는 Navigation SDK에 전달하여 차량 경로 지정 방법을 안내할 수 있는 경로 토큰을 반환합니다.

Routes API에 경로 토큰을 요청하고 사용하면 다음과 같은 일이 발생합니다.

  1. Routes API는 경로 다중선과 경로 목표가 포함된 암호화된 경로 토큰을 반환합니다.

  2. 경로 토큰을 Navigation SDK에 전달합니다.

  3. Navigation SDK는 경로를 검색하거나 조건 변경으로 인해 경로를 사용할 수 없는 경우 가장 일치하는 경로를 검색합니다.

  4. 경로를 운전하는 동안 교통정보 또는 기타 도로 상황이 변경되거나 차량이 계획된 경로에서 벗어나면 수정된 경로는 토큰의 경로 목표를 기반으로 최적의 경로와 일치시키려고 계속 시도합니다.

이 과정을 통해 실제 경로와 계획 중인 경로의 거리가 극대화됩니다.

계획된 경로를 정확하게 따를 수 없는 이유

계획된 경로 및 경로 목표를 따라야 하는 가이드라인으로 생각하세요. 이는 처방적이 아닙니다. 계획된 경로를 만든 이후 도로 상황, 시작 위치 또는 기타 매개변수의 변경으로 인해 계획된 경로와 가이드 내비게이션에서 제공하는 경로 간에 차이가 있을 수 있습니다. 이 차이로 인해 다른 중요한 이동 품질 중에서도 거리 및 도착예정시간에 대한 계획한 목표와 실제 목표가 일치하지 않을 수 있습니다.

경로 토큰을 사용하여 경로 계획

다음 단계에 설명된 대로 경로 토큰을 만든 후 Navigation SDK에 전달하여 경로를 계획할 수 있습니다.

1단계: Routes 또는 Routes Preferred API를 사용하여 경로 토큰 만들기

  1. 다음 방법 중 하나를 사용하여 경로 토큰을 요청합니다.

    • Routes API: computeRoutes Routes API에서 경로 토큰을 요청하는 방법에 대한 자세한 내용은 경로 계산경로 토큰 요청을 참조하세요.

    • Routes Preferred API: computeCustomRoutes. Routes Preferred API에서 경로 토큰을 요청하는 방법에 대한 자세한 내용은 경로 계획을 참조하세요.

  2. 경로 토큰 사용을 위한 요구사항을 충족하도록 경로 요청을 설정합니다.

    • travel_modeDRIVING로 설정합니다.
    • routing_preferenceTRAFFIC_AWARE 또는 TRAFFIC_AWARE_OPTIMAL로 설정합니다.
    • Via 경유지 사용 안함

2단계: 탐색 SDK에 경로 토큰 전달

  1. 경로 토큰 저장: Navigation SDK에서 경로 토큰을 저장할 문자열을 설정합니다. 예를 들면 다음과 같습니다.

    let routeToken = "route token returned by Routes API"

    반환된 경로 토큰의 예는 다음과 같습니다.

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. mapView.navigator setDestinations 메서드를 사용하여 Navigation SDK에 경로 토큰을 전달하고 경로 토큰을 만들 때 사용한 것과 동일한 목적지 경유지를 지정합니다.

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Navigator.setDestinations 메서드는 요청 상태를 반환합니다. 사용자의 위치에서 지정된 목적지까지의 경로가 발견되면 RouteStatus.OK가 반환됩니다.

이 메서드에 관한 자세한 내용은 Navigator.setDestinations를 참고하세요.

다음 코드 예는 계획된 경로를 가져오는 방법을 보여줍니다.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

경로 토큰과 Navigation SDK의 상호작용 방식

Navigation SDK에서 생성된 경로와 경로 토큰에서 계획된 경로가 상호작용하는 방법은 다음과 같습니다.

  • 이전에 설정한 모든 대상을 재정의합니다.

  • 차량 출발 위치를 사용합니다.

  • 도로 및 교통상황을 조정합니다. 계획된 경로를 정확하게 따를 수 없는 이유를 참고하세요.

  • 다음 라우팅 관련 옵션은 불필요한 것으로 무시합니다.

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • 팔로우:

    • 경유지 관련 옵션(예: 도로변 환경설정)

    • 경로 목표. Navigation SDK가 반환된 경로를 조정해야 하는 경우 경로 토큰을 요청할 때 지정한 경로 목표를 사용합니다. 따라서 Routes API에서 지정한 것과 동일한 경유지 관련 옵션을 사용해야 합니다.