경로 매트릭스 가져오기

Routes API를 사용하면 computeRouteMatrix 메서드(REST) 또는 스트리밍 ComputeRouteMatrix 메서드 (gRPC)를 호출하여 여러 출발지 및 목적지에 대한 경로의 거리와 소요 시간을 계산할 수 있습니다.

출발지와 목적지 목록이 주어지면 이 메서드는 각 출발지에서 시작하여 각 목적지에서 끝나는 경로의 거리와 소요 시간을 계산합니다.

대중교통 경로 매트릭스 가져오기

또한 대중교통에 대한 경로 행렬을 계산할 수도 있습니다. 예를 보려면 대중교통 경로 매트릭스 가져오기를 참고하세요.

요청 한도

Compute Route Matrix 메서드는 주소 또는 장소 ID를 사용하는 경유지와 요소에 다음과 같은 요청 한도를 적용합니다. 요소는 경로 행렬에서 각 출발지와 목적지 사이의 경로이므로 요소 수는 출발지 수에 목적지 수를 곱한 값입니다. 예를 들어 출발지가 10개이고 목적지가 10개이면 요소 100개가 됩니다.

  • TRANSIT 경로가 아닌 경로의 경우 요소의 수가 625개를 초과할 수 없습니다.

  • TRANSIT 경로를 지정하는 경우 요소 수는 100개를 초과할 수 없습니다.

  • TRAFFIC_AWARE_OPTIMAL를 지정하는 경우 요소 수는 100을 초과할 수 없습니다. TRAFFIC_AWARE_OPTIMAL에 대한 자세한 내용은 교통정보 데이터 포함 방법 및 포함 여부 지정을 참고하세요.

  • 주소 또는 장소 ID를 사용하여 출발지 또는 목적지를 지정하는 경우 이 방법으로 총 50개까지 지정할 수 있습니다.

응답 오류

Compute Route Matrix 메서드의 한 가지 기능은 전체 응답 또는 개별 응답 요소에 대해 오류를 반환할 수 있다는 것입니다. 예를 들어 요청 형식이 잘못된 경우(예: 출처가 0개) 전체 응답에 오류가 포함됩니다.

하지만 오류가 응답의 일부 요소에 적용되는 경우 (예: 출발지와 목적지의 조합 중 한 가지 조합에 대해 경로를 계산할 수 없음) 오류의 영향을 받는 요소만 오류 코드를 반환합니다.

gRPC 스트림 결과

ComputeRouteMatrix gRPC 메서드는 출발지와 목적지 목록을 가져와 각 출발지 및 목적지 조합에 대한 경로 정보를 포함하는 스트림을 반환합니다. 결과가 스트림으로 반환되므로 가능한 경로 조합이 모두 계산될 때까지 기다리지 않아도 결과 처리를 시작할 수 있습니다.

스트림에서 반환되는 요소는 무작위 순서의 반환이 보장되지 않습니다. 따라서 각 응답 요소에는 origin_indexdestination_index가 포함됩니다. 요청에서 지정한 출발지와 목적지의 경우 경로 출발지는 지정된 요소의 origins[origin_index]와 같고 경로 목적지는 destinations[destination_index]와 같습니다. 이러한 배열은 0부터 색인 처리됩니다. 출발지 및 목적지 목록 순서를 저장하는 것이 중요합니다.

경로 행렬 계산 예시

HTTP 요청에 computeRouteMatrix 메서드를 사용하여 경로 매트릭스를 계산합니다.

HTTP 예시

다음 예는 computeRouteMatrix HTTP 요청을 보여줍니다. 이 예시에서 사용자는 다음을 수행합니다.

  • 두 개의 출발지와 두 개의 목적지 경유지의 배열을 지정합니다. 이 메서드는 각 출발지에서 각 목적지까지의 경로를 계산하므로 응답에 4개의 경로가 포함됩니다.

    배열에서 첫 번째 요소는 색인 0에 있고 두 번째 요소는 색인 1에 있는 식입니다.

  • 응답 필드 마스크를 포함하여 반환할 응답(REST) 또는 ComputeRoutesResponse(gRPC)의 필드를 지정합니다. 이 예시에서는 경로마다 originIndex, destinationIndex, duration, distanceMeters, status, condition를 반환하도록 요청을 구성합니다. 자세한 내용은 반환할 필드 선택을 참조하세요.

curl -X POST -d '{
  "origins": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420761,
            "longitude": -122.081356
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.403184,
            "longitude": -122.097371
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    }
  ],
  "destinations": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420999,
            "longitude": -122.086894
          }
        }
      }
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.383047,
            "longitude": -122.044651
          }
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \
'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'

응답에는 모든 출발지와 목적지 경유지의 조합에 대한 4개의 가능한 경로가 포함됩니다.

originIndexdestinationIndex 응답 필드를 사용하여 응답의 각 경로를 식별합니다. 예를 들어 응답의 originIndex이 1이면 요청에 있는 origins 배열의 색인 1에 있는 경유지에서 계산된 경로에 해당합니다.

[
    {
        "originIndex": 0,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 822,
        "duration": "160s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 2919,
        "duration": "361s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 5598,
        "duration": "402s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 0,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 7259,
        "duration": "712s",
        "condition": "ROUTE_EXISTS"
    }
]

gRPC 예시

gRPC 요청 예는 gRPC 요청 예시의 예시를 참조하세요. 해당 페이지의 Java 예시에서는 Compute Routes와 Compute Route Matrix를 모두 호출합니다.

클라이언트 측 자바스크립트 예

const reqBody = {
   "origins": [
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.420761,
               "longitude": -122.081356
             }
           }
         }
       },
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.403184,
               "longitude": -122.097371
             }
           }
         }
       }
     ],
     "destinations": [
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.420999,
               "longitude": -122.086894
             }
           }
         }
       },
       {
         "waypoint": {
           "location": {
             "latLng": {
               "latitude": 37.383047,
               "longitude": -122.044651
             }
           }
         }
       }
     ],
   "travelMode": "DRIVE",
   "routingPreference": "TRAFFIC_AWARE_OPTIMAL"
};
fetch("https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix", {
   method: "POST",
   headers: {
       "Content-Type": "application/json",
       "X-Goog-Api-Key": "YOUR_API_KEY",
       "X-Goog-FieldMask": "*"
   },
   body: JSON.stringify(reqBody)
}).then((response) => {
   return response.json();
}).then((data) => {
   if(data.hasOwnProperty("error")){
       console.log(data.error);
   } else {
       console.log(data);
   }
}).catch((error) => {
   console.log(error)
});