Tối ưu hoá điểm tham chiếu tuyến đường của bạn

Tối ưu hoá điểm trung gian là một tính năng Routes Preferred (Ưu tiên tuyến đường) mở rộng ComputeRoutes. Tính năng này tối ưu hoá thứ tự của các điểm trung gian trong tuyến đường của người đi, đảm bảo rằng họ đi theo tuyến đường hiệu quả nhất có thể. Việc triển khai ComputeRoutes tối ưu hoá điểm trung gian hỗ trợ các chế độ di chuyển sau:

  • Lái xe
  • Xe hai bánh chạy bằng động cơ
  • Đạp xe
  • Đi bộ

Tại sao nên sử dụng tính năng tối ưu hoá điểm trung gian?

Khi xây dựng một ứng dụng hướng dẫn người dùng đi qua một số điểm trung gian trên đường đến đích, điều quan trọng là người đi phải đi qua các điểm trung gian theo thứ tự tối ưu. Điều này đảm bảo rằng người đi lại đến được mọi điểm trung gian trong khoảng thời gian ngắn nhất.

Cách hoạt động

Theo mặc định, ComputeRoutes tính toán một tuyến đường thông qua các điểm trung gian theo thứ tự ban đầu được cung cấp. Bạn có thể yêu cầu ComputeRoutes tối ưu hoá tuyến đường bằng cách sắp xếp lại các điểm trung gian theo thứ tự hiệu quả hơn. Bạn sẽ nhận được một tuyến đường có các điểm trung gian được tối ưu hoá nếu đặt trường optimizeWaypointOrder trong phần nội dung yêu cầu thành true.

Lưu ý: Tính năng tối ưu hoá điểm trung gian chủ yếu dựa trên thời gian di chuyển, nhưng cũng xem xét các yếu tố khác, chẳng hạn như khoảng cách và số lượt rẽ.

Nhận các điểm trung gian được sắp xếp lại

Để nhận một tuyến đường có các điểm trung gian được sắp xếp lại, hãy đặt trường boolean optimizeWaypointOrder thành true trong phần nội dung của yêu cầu thành ComputeRoutes. Ngoài ra, hãy đưa trường optimizedIntermediateWaypointIndex vào mặt nạ trường. Nội dung phản hồi chứa thứ tự điểm trung gian được tối ưu hoá trong các trường optimizedIntermediateWaypointIndex.

Lưu ý: Trường optimizedIntermediateWaypointIndex trả về các giá trị dựa trên 0.

Yêu cầu mẫu

Yêu cầu mẫu sau đây cung cấp một tuyến đường gần khuôn viên Đại học Stanford. Các điểm trung gian của tuyến đường đã được cung cấp tuần tự trong yêu cầu. Yêu cầu này chứa một điểm xuất phát và một điểm đến, với hai điểm trung gian.

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

Ví dụ về phản hồi

Bạn có thể tìm thấy các chỉ mục điểm trung gian được sắp xếp lại trong các trường optimizedIntermediateWaypointIndex trong đối tượng tuyến trong phần nội dung phản hồi. Đường đa tuyến được mã hoá giống như trong API chỉ đườngComputeRoutes.

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
}

Trong ví dụ này, hãy lưu ý rằng việc tối ưu hoá các điểm trung gian sẽ đảo ngược thứ tự ban đầu của chúng.

Yêu cầu có các điểm trung gian được tối ưu hoá sẽ mất nhiều thời gian xử lý hơn so với yêu cầu định tuyến đơn giản. Do đó, bạn nên đặt thời gian chờ cao hơn cho lệnh gọi phương thức bằng cách đặt giá trị cho tiêu đề yêu cầu X-Server-Timeout thành ít nhất 10 giây. Nếu tiếp tục nhận được lỗi hết thời gian chờ, bạn có thể thêm một giây rồi thử lại.

Giới hạn sử dụng

Để sử dụng tính năng tối ưu hoá điểm trung gian, bạn phải tuân thủ các giới hạn và điều kiện sử dụng sau:

  • Bạn có thể chỉ định tối đa giới hạn sử dụng cho các điểm trung gian trên tuyến đường:

    • Tối đa 98 điểm trung gian chỉ sử dụng toạ độ vĩ độ và kinh độ.
    • Tối đa 25 điểm trung gian nếu bạn chỉ định bất kỳ điểm trung gian nào bằng mã địa điểm.
  • Tất cả các điểm trung gian của bạn phải thuộc loại điểm dừng. Không có waypoint nào thuộc loại via.

  • Bạn phải thêm routes.optimizedIntermediateWaypointIndex vào mặt nạ trường.

  • Nếu yêu cầu của bạn có 25 điểm trung gian trở lên, thì yêu cầu đó cũng phải tuân thủ các điều kiện sau:

    • Khoảng cách tích luỹ theo đường thẳng giữa tất cả các điểm trung gian phải dưới 1.000 km. Khoảng cách này bao gồm cả điểm xuất phát và điểm đến.

    • Chế độ đi lại phải là LÁI XE.