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 về tuyến đường, tính năng này 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 khách du lịch, đảm bảo chúng đi theo tuyến đường hiệu quả nhất có thể. Quá trình triển khai ComputeRoutes của tính năng tối ưu hoá điểm tham chiếu hỗ trợ các chế độ đi lại sau đây:

  • 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 tạo 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 tới một đích đến, khách du lịch phải truyền tải các điểm tham chiếu theo 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 một tuyến thô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ể nhận ComputeRoutes để tối ưu hoá tuyến bằng cách sắp xếp lại các điểm tham chiếu 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 tham chiếu được tối ưu hoá nếu đặt trường optimizeWaypointOrder trong nội dung yêu cầu thành true.

Lưu ý: Quá trình 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 xem xét các yếu tố khác, chẳng hạn như khoảng cách và số vòng quay.

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 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 tham chiếu đượ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 trong ví dụ sau cung cấp một tuyến đường gần khuôn viên trường Đại học Stanford. Các điểm tham chiếu tuyến đường đã được cung cấp tuần tự trong yêu cầu. Yêu cầu chứa một điểm gốc và một đích đến, với 2 điểm tham chiếu 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 tham chiếu trung gian được sắp xếp lại trong các trường optimizedIntermediateWaypointIndex trong đối tượng tuyến đường trong nội dung phản hồi. Hình nhiều đường đượ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, lưu ý rằng việc tối ưu hoá các điểm tham chiếu sẽ đảo ngược thứ tự ban đầu của chúng.

Yêu cầu có điểm tham chiếu đượ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 đề của yêu cầu X-Server-Timeout thành ít nhất 10 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 và điều kiện sử dụng sau đây:

  • 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 của mình:

    • 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 mặt nạ trường.

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

    • Khoảng cách theo đường thẳng tích luỹ giữa tất cả các điểm tham chiếu phải nhỏ hơn 1.000 km. Khoảng cách này bao gồm cả điểm gốc và điểm đến.

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