경로 경유지 최적화

경유지 최적화는 기본 경로 기능으로 ComputeRoutes 여행자의 경로에서 중간 경유지의 순서를 가능한 한 가장 효율적인 경로를 이동하도록 합니다. ComputeRoutes 경유지 최적화 구현은 다음과 같은 이동 수단을 지원합니다.

  • 운전
  • 전동 오토바이
  • 자전거
  • 산책

경유지 최적화를 사용해야 하는 이유

목적지로 가는 길에 여러 경유지를 통해 사용자를 안내하는 앱을 빌드할 때 여행자가 목적지의 경유지를 통과하는 것이 중요합니다. 최적의 순서입니다. 이렇게 하면 여행자가 출발지의 모든 경유지에 도착하고 가장 짧은 시간 동안요.

작동 방식

기본적으로 ComputeRoutes는 경유지를 통과하는 경로를 순서대로 계산합니다. 원래 제공된 날짜로 계산됩니다 ComputeRoutes를 통해 최적화할 수 있습니다. 중간 경유지를 보다 효율적인 순서로 다시 정렬하여 경로를 다시 정렬해 보겠습니다. 요청 본문의 optimizeWaypointOrder 필드를 true로 전송합니다.

참고: 경유지 최적화 계산은 주로 이동 시간을 기준으로 하지만, 이 기능은 거리와 같은 다른 요소도 고려합니다. 지정할 수 있습니다.

재정렬된 경유지 가져오기

경유지가 재정렬된 경로를 가져오려면 부울 필드를 설정하세요. 요청 본문에서 optimizeWaypointOrdertrue로 설정합니다. ComputeRoutes입니다. optimizedIntermediateWaypointIndex 필드도 포함합니다. 필드 마스크에 포함되어야 합니다. 응답 본문에는 optimizedIntermediateWaypointIndex 필드

참고: optimizedIntermediateWaypointIndex 필드는 0부터 시작하는 값을 반환합니다. 값으로 사용됩니다.

요청 예시

다음 요청 예시는 스탠퍼드 근처 경로를 제공합니다. 대학 캠퍼스 경로 경유지는 합니다. 요청에는 출발지와 목적지가 한 개씩 포함되어 있으며 경유지.

POST /v1alpha:computeRoutes
Host: routespreferred.googleapis.com
Content-Type: application/json
X-Server-Timeout: 10
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: routes.optimizedIntermediateWaypointIndex,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.418956,
        "longitude": -122.160815
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.4176423,
          "longitude":-122.1102246
        }
      }
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.407689,
          "longitude": -122.1360597
        }
      }
    }
  ],
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.4032137,
        "longitude": -122.0349119
      }
    }
  },
  "travelMode": "DRIVE",
  "optimizeWaypointOrder": true,
  "routingPreference": "TRAFFIC_AWARE"}

응답 예

순서가 변경된 중간 경유지 색인은 다음 경로 객체의 경로 객체 내 optimizedIntermediateWaypointIndex 필드 응답 본문입니다. 인코딩된 다중선Directions APIComputeRoutes:

routes {
  distance_meters: 17647
  duration {
    seconds: 1866
  }
  polyline {
    encoded_polyline: "wkkcFvorhVU{@Ec@C}CG}@Mm@[}@i@y@[[g@_@Tk@BSjCgGfF|D\\Pv@Lj@@XaCTeC\\aCTs@`ByD`@k@h@e@x@Yh@GtADhBF|@G`AWpAs@lAsAdA{A`BmDr@cBmUqQoS}OyGmFiBsAgEwD}CaCU_@Og@@e@Hy@nGkO~@sBr@cBlDqIlByEp@}AjIfGnBbBHLLd@^p@~ErDfNrKrA~@DIhEeBTQ~AqDlE{KjBgE|FnEh@aAi@`A}FoE~AmD`A}BcAm@mHwFwD}CkLwIsDqCgF_EG[GKnCsDrA_BrC_CnCoBpEkD`EyClCsBcBeBIAkGkH]k@eJmKQKsAuA_@g@wCoDGQmEmFmIqROKaDuHvBkBxAgANCRH^f@v@dBHDD?`AUiBqEhBpEaATMCQYm@wAY]SIOByAfAwBjB_ByDaAwBiCeIA[c@aBqEuNOm@IQbA{c@p@aZFmCTuBLg@Tc@BUAKxOeV~Vy_@nBoDv@_BvAcDzA_EdG{RdC{HtIsY|B{Hx@mDbAuFdBsMbKsv@TaBf@}AdF{Sn@_DJq@Lo@aE`@]GUQmAmAQk@@g@RK`Ce@d@UDEPc@f@cCrAyGJs@X{AbIem@bA{JD_AIaAMg@o@{A_Ad@y@NaCLCsCK_FGI"
  }
  optimizedIntermediateWaypointIndex: 1
  optimizedIntermediateWaypointIndex: 0
}

이 예에서 경유지를 최적화하면 경유지가 원래대로 있습니다.

최적화된 경유지가 포함된 요청은 단순 라우팅보다 처리 시간이 더 오래 걸립니다. 합니다. 따라서 메서드 호출의 제한 시간을 더 높게 설정하는 것이 좋습니다. X-Server-Timeout 요청 헤더의 값을 최소 10개의 초 단위입니다. 시간 초과 오류가 계속 발생하는 경우 1초를 더 추가할 수 있습니다. 그런 다음 다시 시도하세요.

사용 제약사항

경유지 최적화를 사용하려면 다음과 같은 사용 제한과 조건:

  • 중간 경유지에 대한 사용 제한 을 지정할 수 있습니다. 경로:

    • 위도 및 경도 좌표만 사용하여 최대 98개의 경유지를 설정할 수 있습니다.
    • 장소 ID를 사용하여 경유지를 지정하는 경우 최대 25개의 경유지.
  • 모든 경유지는 경유지 유형이어야 합니다. 경유지 없음 via 유형일 수 있습니다.

  • 필드에 routes.optimizedIntermediateWaypointIndex을(를) 추가해야 합니다. 마스크.

  • 요청에 25개 이상의 중간 경유지가 있는 경우 다음 조건을 준수해야 합니다.

    • 모든 경유지 사이의 누적 직선 거리는 1,000km 미만으로 갈 수 있었습니다. 이 거리는 출발지와 목적지를 모두 포함합니다. 있습니다.

    • 이동수단은 DRIVE여야 합니다.