Theo mặc định, Routes API (API Tuyến đường) sẽ trả về tuyến mặc định, thường là tuyến nhanh nhất từ điểm gốc đến đích. Khi bạn yêu cầu các tuyến thay thế, API sẽ trả về tối đa 3 tuyến cùng với tuyến đường mặc định. Sau đó, khách hàng có thể chọn một tuyến đường phù hợp nhất với yêu cầu của họ.
Những điều cần cân nhắc khi yêu cầu tuyến đường thay thế
Để yêu cầu tuyến đường thay thế, hãy lưu ý những điều cần cân nhắc sau đây:
Bạn chỉ có thể yêu cầu tuyến đường thay thế cho các tuyến đường không có điểm tham chiếu trung gian. Việc yêu cầu tuyến thay thế khi tuyến chỉ định các điểm tham chiếu trung gian sẽ không gây ra lỗi. Tuy nhiên, hệ thống sẽ không trả về tuyến thay thế nào.
Phản hồi này chứa tối đa 3 tuyến thay thế. Tuy nhiên, đôi khi không có tuyến thay thế nào nên phản hồi chỉ chứa tuyến mặc định.
Do cần phải xử lý thêm để tính toán các tuyến thay thế, nên việc yêu cầu các tuyến thay thế có thể làm tăng thời gian phản hồi của API.
Ví dụ về yêu cầu tuyến đường thay thế
Đặt computeAlternativeRoutes
thành true
để yêu cầu tuyến đường thay thế. Ví dụ sau đây cho thấy cách yêu cầu các tuyến thay thế trong yêu cầu phương thức computeRoutes (REST).
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude":42.340173523716736, "longitude":-71.05997968330408 } } }, "destination":{ "location":{ "latLng":{ "latitude":42.075698891472804, "longitude": -72.59806562080408 } } }, "travelMode": "DRIVE", "routingPreference":"TRAFFIC_AWARE", "computeAlternativeRoutes": true }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
Trong ví dụ này, bạn chỉ định một mặt nạ cho trường (field mask) để phản hồi chỉ chứa các thuộc tính duration
, distanceMeters,
và routeLabels
cho mỗi tuyến. Sau đó, khách hàng có thể sử dụng thông tin đó để chọn tuyến đường sẽ đi. Để biết thêm thông tin, hãy xem phần Chọn thông tin cần trả về.
Ví dụ về phản hồi cho tuyến đường thay thế
Trong phản hồi, hãy sử dụng thuộc tính mảng routeLabels
để xác định tuyến tiếp cận:
Đối với tuyến mặc định, thuộc tính
routeLabels
chứaDEFAULT_ROUTE
.Đối với mọi tuyến đường thay thế, thuộc tính
routeLabels
sẽ chứaDEFAULT_ROUTE_ALTERNATE
.
Trong ví dụ này, phản hồi chứa tuyến mặc định và 2 tuyến thay thế. Lưu ý rằng giá trị của các thuộc tính duration
và distanceMeters
là khác nhau đối với từng tuyến:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }
Thêm hình nhiều đường vào câu trả lời
Để giúp người dùng chọn tuyến dễ dàng hơn, hãy thêm hình nhiều đường cho từng tuyến vào phản hồi. Sau đó, bạn có thể hiển thị từng hình nhiều đường trên bản đồ.
Để thêm hình nhiều đường, hãy thêm routes.polyline
vào mặt nạ cho trường (field mask):
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'
Sau đó, phản hồi chứa hình nhiều đường cho từng tuyến:
{ "routes": [ { "distanceMeters": 150322, "duration": "5309s", "polyline": { "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE" ] }, { "distanceMeters": 157614, "duration": "6879s", "polyline": { "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] }, { "distanceMeters": 189311, "duration": "7376s", "polyline": { "encodedPolyline": "FVLL|Af@HPAV…PgA^qC" }, "routeLabels": [ "DEFAULT_ROUTE_ALTERNATE" ] } ] }