경로를 통과할 지점 설정

기본적으로 중간 경유지는 승차 및 하차 정류장에 사용되지만, 중간 경유지가 지나갈 목적으로 사용하도록 지정할 수도 있습니다.

출발지와 목적지를 연결하는 중간 경유지와 출발지와 목적지를 연결하는 경로 구간은 중간(via이라고 함) 경유지를 통과하는 경로 구간만 포함합니다.

Waypoint (REST) 또는 Waypoint (gRPC)를 사용하여 경유지의 via 속성을 true로 설정하여 중간 경유지를 통과 경유지로 구성합니다.

via 속성은 지도에서 경유지를 드래그하는 사용자에 대한 응답으로 경로를 만들 때 가장 효과적입니다. 이렇게 하면 사용자가 최종 경로가 실시간으로 어떻게 표시되는지 확인할 수 있으며 Compute 경로에 액세스할 수 있는 위치에 경유지를 배치할 수 있습니다.

다음 예에서는 중간 경유지를 통과 경유지로 표시하는 방법을 보여줍니다.

{
  "location": {
    "latLng": {
      "latitude":37.419734,
      "longitude":-122.0827784
    }
  },
  "via": true
}

중간 경유지의 장소 ID 액세스

출발지, 목적지 또는 중간 경유지의 위치를 주소 문자열 또는 플러스 코드로 지정하면 API는 해당하는 장소 ID가 있는 가장 관련성 높은 위치를 찾으려고 시도합니다. 결과의 geocodingResults.intermediates 배열에는 경유지의 위치에 해당하는 장소 ID와 위치에 관한 추가 데이터가 포함됩니다.

intermediates 배열의 각 요소에 대해 intermediateWaypointRequestIndex 속성을 사용하여 요청의 어느 중간 경유지가 응답의 장소 ID에 해당하는지 확인합니다.

예를 들면 다음과 같습니다.

  • 요청에서 3개의 중간 경유지를 지정합니다. 이러한 경유지 중 2개는 주소 문자열로 지정되고 하나는 위도/경도 좌표로 지정됩니다.

  • 결과에서 geocodingResults 배열을 반환하도록 지정하려면 응답 필드 마스크에 geocodingResults를 포함합니다.

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA"
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      }
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063"
    }
  ],
  "travelMode": "DRIVE",
}'
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY'
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults'
'https://routes.googleapis.com/directions/v2:computeRoutes'

응답에는 출발지, 목적지, 경유지 3개 중 두 곳의 장소 ID가 포함된 geocodingResults 배열이 포함됩니다. 요청의 색인 0과 2에 있는 경유지입니다. 요청의 색인 1에 있는 경유지는 위도/경도 좌표를 사용하여 지정되었기 때문에 응답의 geocodingResults 배열에서 생략됩니다.

{
  "routes": [{...}],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
     "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
            "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}