구글 지도 Routes API 경로 수정: routeModifiers로 경로 특성 회피하기

내비게이션 경로를 계산할 때, 톨게이트나 고속도로, 페리 또는 실내 구간을 피하고 싶다면 routeModifiers 옵션을 활용할 수 있습니다. 이 글에서는 Google 지도 Routes API의 경로 수정자(Route Modifiers)를 설정하는 방법과 주의사항을 자세히 살펴보겠습니다. 

1. routeModifiers란?

routeModifiers는 Compute Routes 요청에 추가할 수 있는 객체로, 사용자가 회피를 원하는 경로 특성을 지정합니다. API는 해당 특성을 우선 고려해 가능한 한 회피된 경로를 반환하려 시도합니다.

2. 지원되는 회피 옵션

  • avoidTolls: 톨게이트(Toll) 회피
  • avoidHighways: 고속도로(Highway) 회피
  • avoidFerries: 페리(Ferry) 회피
  • avoidIndoor: 실내(indoor) 경로 회피

3. 추가 옵션: vehicleInfo, tollPasses

경로 수정자는 회피 옵션 외에도 vehicleInfotollPasses를 통해 차량 연료 타입과 보유 중인 톨 패스를 지정할 수 있습니다.

  • vehicleInfo.emissionType: GASOLINE, DIESEL, HYBRID, ELECTRIC 중 선택 (친환경 경로와 연계) 
  • tollPasses: US_WA_GOOD_TO_GO 등 보유 톨 패스 배열 지정 (톨 요금 계산과 연계)

4. JSON 요청 예시

{
  "origin": {
    "location": {
      "latLng": { "latitude": 37.419734, "longitude": -122.0827784 }
    }
  },
  "destination": {
    "location": {
      "latLng": { "latitude": 37.417670, "longitude": -122.079595 }
    }
  },
  "travelMode": "DRIVE",
  "routeModifiers": {
    "avoidTolls": true,
    "avoidHighways": true,
    "avoidFerries": false,
    "avoidIndoor": false,
    "vehicleInfo": {
      "emissionType": "GASOLINE"
    },
    "tollPasses": ["US_WA_GOOD_TO_GO"]
  }
}

5. curl 요청 예시

curl -X POST 'https://routes.googleapis.com/directions/v2:computeRoutes' \
  -H 'Content-Type: application/json' \
  -H 'X-Goog-Api-Key: YOUR_API_KEY' \
  -H 'X-Goog-FieldMask: routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline' \
  --data-raw '{
    "origin": {
      "location": { "latLng": { "latitude": 37.419734, "longitude": -122.0827784 } }
    },
    "destination": {
      "location": { "latLng": { "latitude": 37.417670, "longitude": -122.079595 } }
    },
    "travelMode": "DRIVE",
    "routeModifiers": {
      "avoidTolls": true,
      "avoidHighways": true
    }
  }'

6. 주의사항

  • 회피 옵션이 항상 완벽히 적용되는 것은 아닙니다. 대체 경로가 존재하지 않거나 회피 시 이동 시간이 크게 늘어날 경우, 원본 경로가 그대로 반환될 수 있습니다.
  • Compute Route Matrix 기능은 routeModifiers를 지원하지 않습니다.
  • heading 또는 sideOfRoad 같은 Location Modifiers 옵션과 함께 사용할 수 있습니다.

routeModifiers를 활용하면, 사용자가 원하는 경로 특성을 우선 반영해 더 편리한 내비게이션 경험을 제공할 수 있습니다.