경로에서 정류장 순서 최적화

기본적으로 Routes API Compute Routes 메서드는 중간 기착 경유지라고 하는 여러 정류장을 통과하는 경로를 제공된 순서대로 계산합니다.

Routes API로 보다 효율적인 순서로 정류장을 재정렬하여 제공된 경로를 최적화할 수 있습니다. 경유지 최적화는 이동 시간을 기준으로 최적화하지만, 가장 효율적인 경로를 결정할 때 거리 및 방향 전환 횟수와 같은 다른 요인도 고려합니다.

경유지를 최적화하는 방법

  1. 경로의 경유지에 true로 설정된 via가 없어야 합니다(예: {"address": "Clare,SA", "via": true}). 중간 경유지에 대한 자세한 내용은 중간 경유지 지정을 참고하세요.

  2. routing_preferenceTRAFFIC_AWARE_OPTIMAL로 설정되어 있지 않은지 확인합니다.

  3. optimize_waypoint_ordertrue로 설정합니다. 예를 들면 다음과 같습니다.

    "optimizeWaypointOrder": "true",
    
  4. 필드 마스크에서 routes.optimizedIntermediateWaypointIndex 필드를 지정합니다.

    REST

    -H X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex

    RPC

    const (fieldMask = "routes.optimizedIntermediateWaypointIndex")

경유지 순서가 최적화되는 방법 이해하기

Routes API가 경로에서 경유지의 순서를 최적화하는 방법은 다음과 같습니다.

  1. 요청에 제공된 순서에 따라 0부터 경유지의 색인을 자동으로 생성합니다.

  2. 요청에서 경유지에 할당한 색인 번호를 사용하여 경유지의 순서를 최적화합니다.

  3. 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": "Connawarra,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.optimizedIntermediateWaypointIndex' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Routes API는 요청에 제공된 중간 경유지의 색인을 0부터 생성합니다. 예를 들면 다음과 같습니다.

0    {"address": "Barossa+Valley,SA"},
1    {"address": "Clare,SA"},
2    {"address": "Connawarra,SA"},
3    {"address": "McLaren+Vale,SA"}

그런 다음 요청에 제공된 경유지 4개의 색인 번호를 사용하여 서비스는 최적화된 순서를 반환합니다.

"optimizedIntermediateWaypointIndex": [
                3,
                2,
                0,
                1
            ]