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 họ đi theo tuyến đường hiệu quả nhất có thể. Việc triển khai tính năng tối ưu hoá điểm đánh dấu ComputeRoutes
hỗ trợ các chế độ di chuyển sau:
- Lái xe
- Xe mô tô hai bánh
- Đạp xe
- Đi bộ
Tại sao nên sử dụng tính năng tối ưu hoá điểm đánh dấ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 đến một đích đến, điều quan trọng là khách du lịch 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 qua các điểm tham chiếu theo thứ tự mà các điểm này được cung cấp ban đầu. Bạn có thể nhấn vào biểu tượng ComputeRoutes
để tối ưu hoá tuyến đường bằng cách sắp xếp lại các điểm đến 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 ý: 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ẽ.
Nhận các điểm tham chiếu được sắp xếp lại
Để nhận được 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 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
vào mặt nạ trường. Nội dung phản hồi chứa thứ tự điểm đánh dấ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.
Ví dụ về yêu cầu
Yêu cầu ví dụ 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 trên 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 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. Đường nhiều đoạ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 các điểm tham chiếu.
Các phương pháp nên dùng
Yêu cầu có cá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 đề yêu cầu X-Server-Timeout
thành ít nhất mười giây. Nếu vẫn 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 đánh dấu, bạn phải tuân thủ những điều kiện và giới hạ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:
- Tối đa 98 điểm tham chiếu chỉ sử dụng toạ độ vĩ độ và kinh độ.
- Tối đa 25 điểm đánh dấu nếu bạn chỉ định bất kỳ điểm đánh dấu nào bằng mã địa điểm.
Tất cả các điểm tham chiếu của bạn phải thuộc loại stopover. Không có điểm đánh dấu nào của bạn có thể 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ó từ 25 điểm đến 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 đườ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 khởi hành và điểm đến.
Phương tiện di chuyển phải là DRIVE.