Tối ưu hoá điểm tham chiếu là một tính năng của Routes Preferred 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 rằng họ đi theo tuyến đường hiệu quả nhất có thể. Cách triển khai tính năng tối ưu hoá điểm tham chiếu của ComputeRoutes hỗ trợ các phương tiện di chuyển sau:
- Lái xe
- Đi xe hai bánh có động cơ
- Đạp xe
- Đi bộ
Tại sao 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 đi qua một số điểm tham chiếu trên đường đến điểm đến, điều quan trọng là người dùng phải đi qua các điểm tham chiếu theo thứ tự tối ưu. Điều này đảm bảo rằng người đi đường sẽ đến mọi điểm tham chiếu trong thời gian ngắn nhất.
Cách hoạt động
Theo mặc định, ComputeRoutes sẽ tính toán một tuyến đường thông qua các điểm tham chiếu, theo thứ tự ban đầu. 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 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 phần nội dung yêu cầu thành true.
Lưu ý: Phép tính 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ố lượt rẽ.
Lấy các điểm tham chiếu đã sắp xếp lại thứ tự
Để nhận 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 gửi đến ComputeRoutes. Ngoài ra, hãy thêm 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 số 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 tham chiếu của tuyến đường đã được cung cấp theo trình 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, cùng với hai đ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. Đường đa tuyến được mã hoá giống như trong Directions API và ComputeRoutes.
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 tham chiếu sẽ đảo ngược thứ tự ban đầu của chúng.
Các phương pháp được đề xuất
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 nhận được 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:
Bạn có thể chỉ định tối đa hạn mức 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ạ độ 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 phải thuộc loại stopover. Không có điểm tham chiếu nào có thể thuộc loại via.
Bạn phải thêm
routes.optimizedIntermediateWaypointIndexvào mặt nạ trường.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:
Tổng khoảng cách theo đường thẳng 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 xuất phát và điểm đến.
Phương thức di chuyển phải là DRIVE.