경로를 통과할 지점 설정

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

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

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

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

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

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를 지정하는 세 개의 통과 중간 경유지가 포함된 요청을 보여줍니다.

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는 위도 및 경도 좌표를 사용하여 지정했으므로 색인 1의 중간 경유지를 geocodingResults에서 생략합니다.

{
  "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"
      }
    ]
  }
}