기본적으로 Routes API Compute Routes 메서드는 정차 경유지라고 하는 여러 정차 지점을 사용자가 제공한 순서대로 통과하는 경로를 계산합니다.
Routes API에서 더 효율적인 순서로 정류장을 재정렬하여 제공된 경로를 최적화하도록 할 수 있습니다. 경유지 최적화는 이동 시간을 기준으로 최적화하지만 가장 효율적인 경로를 결정할 때 거리, 방향 전환 횟수 등 다른 요인도 고려합니다.
경유지를 최적화하려면 다음 단계를 따르세요.
- 경로의 어떤 경유지에도 - via가- true로 설정되어 있지 않은지 확인합니다(예:- {"address": "Clare,SA", "via": true}). 중간 경유지에 관한 자세한 내용은 중간 경유지 지정을 참고하세요.
- routing_preference이- TRAFFIC_AWARE_OPTIMAL으로 설정되지 않았는지 확인합니다.
- optimize_waypoint_order를- true로 설정합니다. 예를 들면 다음과 같습니다.- "optimizeWaypointOrder": "true", 
- 필드 마스크에서 - routes.optimizedIntermediateWaypointIndex필드를 지정합니다.- REST - -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex - RPC - const (fieldMask = "routes.optimizedIntermediateWaypointIndex") 
경유지 순서가 최적화되는 방식 이해하기
Routes API가 경로의 경유지 순서를 최적화하는 방법은 다음과 같습니다.
- 요청에 제공된 순서에 따라 웨이포인트를 자동으로 색인화합니다(0부터 시작). 
- 요청에서 경유지에 할당된 색인 번호를 사용하여 경유지 순서를 최적화합니다. 
- routes.optimizedIntermediateWaypointIndex아래- waypoint_order필드의- routes객체에 최적화된 경유지 순서를 반환합니다.
예
이 요청은 사우스오스트레일리아 애들레이드에서 사우스오스트레일리아의 각 주요 와인 지역으로 이동한 후 애들레이드로 돌아오는 경로를 최적화해 달라고 요청합니다.
curl -X POST -H 'content-type: application/json' -d ' { "origin": { "address": "Adelaide,SA" }, "destination": { "address": "Adelaide,SA" }, "intermediates": [ {"address": "Barossa+Valley,SA"}, {"address": "Clare,SA"}, {"address": "Coonawarra,SA"}, {"address": "McLaren+Vale,SA"} ], "travelMode": "DRIVE", "optimizeWaypointOrder": "true" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes,geocodingResults.intermediates.intermediateWaypointRequestIndex' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Routes API는 요청에 제공된 중간 경유지를 0부터 시작하여 색인화합니다. 예를 들면 다음과 같습니다.
0 {"address": "Barossa+Valley,SA"}, 1 {"address": "Clare,SA"}, 2 {"address": "Coonawarrav,SA"}, 3 {"address": "McLaren+Vale,SA"}
그런 다음 서비스는 요청에 제공된 4개 경유지의 색인 번호를 사용하여 최적화된 순서를 반환합니다.
"optimizedIntermediateWaypointIndex": [ 3, 2, 0, 1 ]