경로를 통과할 지점 설정

기본적으로 중간 경유지는 승하차를 위해 정차하는 데 사용되지만 중간 경유지를 통과하는 데만 사용하도록 지정할 수도 있습니다.

출발지 웨이포인트, 통과 중간 웨이포인트, 도착 웨이포인트가 포함된 경로에는 중간(via) 웨이포인트를 통과하면서 출발지와 도착지를 연결하는 경로 구간이 하나만 포함됩니다.

Waypoint(REST) 또는 Waypoint(gRPC)를 사용하여 중간 웨이포인트의 via 속성을 true로 설정하여 웨이포인트를 패스스루 웨이포인트로 구성합니다.

via 속성은 사용자가 지도에서 경유지를 끌어서 경로를 생성할 때 가장 효과적입니다. 이렇게 하면 사용자가 최종 경로가 실시간으로 어떻게 나타날지 알 수 있으며, Compute Routes에 액세스가 가능한 위치에 경유지가 배치되도록 보장할 수 있습니다.

다음 예는 중간 웨이포인트를 통과 웨이포인트로 표시하는 방법을 보여줍니다.

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

중간 웨이포인트의 장소 ID에 액세스

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

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

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

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

  • 응답 필드 마스크에 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'

응답에는 출발지, 목적지, 세 개의 중간 지점 중 두 곳의 장소 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"
      }
    ]
  }
}