경로를 통과할 지점 설정

유럽 경제 지역 (EEA) 개발자

기본적으로 API는 중간 경유지를 경로의 정류장으로 취급합니다. 하지만 차량이 멈추지 않고 통과하는 통과형 via 경유지로 중간 경유지를 구성할 수 있습니다.

통과 지점을 사용하여 특정 경로를 형성하거나 조정합니다. 경로를 별도의 픽업 또는 하차 정류장으로 나누는 대신 통과 경유지를 사용하면 경로 엔진이 목적지로 가는 도중에 특정 위치를 통과하도록 강제할 수 있습니다. 예를 들어 선호하는 도로 구간을 따르거나 알려진 위험을 피할 수 있습니다.

출발지, 하나 이상의 통과 중간 경유지, 목적지가 포함된 경로에는 출발지를 목적지에 직접 연결하는 하나의 경로 구간만 포함됩니다.

중간 경유지를 통과 경유지로 구성하려면 REST Waypoint 리소스 또는 gRPC Waypoint 메시지에서 경유지의 via 속성을 true로 설정합니다.

Routes API는 주소, 장소 ID, 위도 및 경도 좌표를 허용하지만, 위도 및 경도 또는 latLng 좌표는 통과 경유지에 가장 정확한 경로 조정을 제공합니다.

via 속성은 지도에서 경유지를 드래그하는 것에 대한 응답으로 경로를 만들 때 가장 효과적입니다. 이 방법을 사용하면 최종 경로가 실시간으로 표시되므로 접근 가능한 위치에 경유지를 배치할 수 있습니다.

예: 통과 웨이포인트 설정

다음 예에서는 완전한 computeRoutes POST 요청에서 중간 경유지에 "via": true를 설정하는 방법을 보여줍니다.

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "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' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

통과 경유지에 주소 또는 장소 ID 사용

정확한 통과 라우팅에는 위도 및 경도 좌표를 사용하는 것이 좋지만 주소 문자열이나 장소 ID를 사용하여 중간 경유지를 지정할 수도 있습니다.

통과 경유지에 주소 또는 장소 ID를 사용하면 API가 위치를 보간하고 탐색 가능한 가장 가까운 도로에 스냅합니다. 이 도로 스냅 프로세스로 인해 정확한 좌표와 비교했을 때 경로가 달라지거나 부정확해질 수 있습니다.

주소 문자열 또는 플러스 코드를 사용하여 경유지를 지정하면 API에서 위치를 지오코딩하고 응답의 geocodingResults.intermediates 배열에서 일치하는 장소 ID를 반환합니다.

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

예: 통과 경유지의 장소 ID 요청

다음 예시에서는 각각 "via": true를 지정하는 3개의 통과 중간 경유지가 포함된 요청을 보여줍니다.

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",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "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'

응답에는 요청 색인 0과 색인 2에서 주소로 지정한 출발지, 목적지, 두 개의 중간 경유지의 장소 ID가 포함된 geocodingResults 배열이 포함됩니다. 위도 및 경도 좌표를 사용하여 지정했기 때문에 API는 geocodingResults에서 색인 1의 중간 경유지를 생략합니다.

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "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"
      }
    ]
  }
}