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

Tối ưu hoá điểm tham chiếu là một tính năng Ưu tiên tuyến đường giúp mở rộng ComputeRoutes. Tính năng này tối ưu hoá thứ tự của các điểm tham chiếu trung gian trong tuyến đường của khách du lịch, đảm bảo họ đi trên tuyến đường hiệu quả nhất có thể. ComputeRoutes Việc triển khai tối ưu hoá điểm tham chiếu hỗ trợ các phương tiện đi lại sau:

  • Lái xe
  • Xe mô tô hai bánh
  • Đạp xe
  • Đi bộ

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

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

Cách hoạt động

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

Lưu ý: Việc tính toán tối ưu hoá điểm tham chiếu chủ yếu dựa trên thời gian di chuyển, nhưng tính năng này cũng xét đến nhiều yếu tố khác, chẳng hạn như khoảng cách và số vòng.

Nhận điểm tham chiếu được sắp xếp lại

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

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

Yêu cầu mẫu

Yêu cầu trong ví dụ sau cung cấp một tuyến đường gần Stanford Khuôn viên trường đại học. Các điểm tham chiếu tuyến đường đã được cung cấp tuần tự trong của bạn. Yêu cầu chứa một điểm gốc và một đích đến, với hai trung gian điểm tham chiếu.

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 tham chiếu trung gian được sắp xếp lại trong phần tử Trường optimizedIntermediateWaypointIndex bên trong đối tượng tuyến trong nội dung phản hồi. Mã hình nhiều đường sẽ giống như trong Direction 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
}

Trong ví dụ này, lưu ý rằng việc tối ưu hoá các điểm tham chiếu sẽ đảo ngược điểm tham chiếu ban đầu đơn đặt hàng.

Một yêu cầu có điểm tham chiếu được tối ưu hoá mất nhiều thời gian xử lý hơn so với một yêu cầu định tuyến đơn giản của bạ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ị ít nhất 10 cho tiêu đề của yêu cầu X-Server-Timeout giây. Nếu tiếp tục gặp lỗi hết thời gian chờ, bạn có thể thêm một giây nữa 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 tham chiếu, bạn phải tuân thủ các giới hạn sử dụng sau đây và điều kiện:

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

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

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

  • Nếu yêu cầu của bạn có từ 25 điểm tham chiếu 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 đường thẳng tích luỹ giữa tất cả các điểm tham chiếu phải bằng dưới 1.000 km. Khoảng cách này bao gồm cả điểm khởi hành và đích.

    • Phương tiện đi lại phải là DRIVE.