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 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, 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.
Các phương pháp được đề xuất
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.