Sử dụng Routes API để tính toán khoảng cách và thời gian của một tuyến đường cho nhiều điểm xuất phát và điểm đến bằng cách gọi phương thức computeRouteMatrix (REST) hoặc phương thức ComputeRouteMatrix truyền trực tuyến (gRPC).
Dựa trên danh sách điểm xuất phát và điểm đến, phương thức này sẽ tính toán khoảng cách và thời gian của một tuyến đường bắt đầu tại mỗi điểm xuất phát và kết thúc tại mỗi điểm đến.
Lấy ma trận tuyến đường đi phương tiện công cộng
Bạn cũng có thể tính toán ma trận tuyến đường trên phương tiện công cộng. Để xem ví dụ, hãy xem phần Lấy ma trận tuyến đường trên phương tiện công cộng.
Giới hạn yêu cầu
Phương thức Compute Route Matrix thực thi các giới hạn yêu cầu sau đây đối với điểm tham chiếu sử dụng địa chỉ hoặc mã địa điểm và đối với các phần tử. Phần tử là các tuyến đường giữa mỗi điểm xuất phát và điểm đến trong ma trận tuyến đường, vì vậy số lượng phần tử là số điểm xuất phát nhân với số điểm đến. Ví dụ: nếu có 10 điểm xuất phát và 10 điểm đến, thì bạn có 100 phần tử:
Số lượng phần tử không được vượt quá 625 đối với các tuyến đường không phải là tuyến đường
TRANSIT.Nếu bạn chỉ định một tuyến đường
TRANSIT, thì số lượng phần tử không được vượt quá 100.Nếu bạn chỉ định
TRAFFIC_AWARE_OPTIMAL, thì số lượng phần tử không được vượt quá 100. Để biết thêm thông tin vềTRAFFIC_AWARE_OPTIMAL, hãy xem phần Chỉ định cách thức và liệu có đưa dữ liệu lưu lượng truy cập vào hay không.Nếu chỉ định điểm xuất phát hoặc điểm đến bằng địa chỉ hoặc mã địa điểm, bạn có thể chỉ định tối đa 50 điểm theo cách này.
Lỗi phản hồi
Một tính năng của phương thức Compute Route Matrix là lỗi có thể được trả về cho toàn bộ phản hồi hoặc cho từng phần tử phản hồi. Ví dụ: toàn bộ phản hồi sẽ chứa lỗi nếu yêu cầu không đúng định dạng (ví dụ: không có nguồn gốc).
Tuy nhiên, nếu lỗi áp dụng cho một nhóm nhỏ các phần tử trong phản hồi (ví dụ: không thể tính toán tuyến đường cho một tổ hợp điểm xuất phát và điểm đến), thì chỉ những phần tử chịu ảnh hưởng của lỗi mới trả về mã lỗi.
Kết quả của luồng gRPC
Phương thức gRPC ComputeRouteMatrix nhận một danh sách các điểm xuất phát và điểm đến, đồng thời trả về một luồng chứa thông tin về tuyến đường cho từng tổ hợp điểm xuất phát và điểm đến. Vì kết quả được trả về dưới dạng luồng, nên bạn không cần phải đợi cho đến khi tất cả các tổ hợp tuyến đường có thể được tính toán trước khi có thể bắt đầu xử lý kết quả.
Các phần tử do luồng trả về không được đảm bảo sẽ được trả về theo bất kỳ thứ tự nào. Do đó, mỗi phần tử phản hồi chứa một origin_index và một destination_index. Đối với điểm xuất phát và điểm đến được chỉ định trong yêu cầu,
điểm xuất phát của tuyến đường tương đương với origins[origin_index] cho một phần tử nhất định
và điểm đến của tuyến đường tương đương với destinations[destination_index].
Các mảng này được lập chỉ mục từ 0. Điều quan trọng là phải lưu trữ thứ tự danh sách nguồn và đích.
Ví dụ về cách tính ma trận tuyến đường
Sử dụng phương thức computeRouteMatrix trong một yêu cầu HTTP để tính toán ma trận tuyến đường.
Ví dụ về HTTP
Ví dụ sau đây cho thấy một yêu cầu HTTP computeRouteMatrix. Trong ví dụ này,
bạn:
Chỉ định một mảng gồm hai điểm tham chiếu xuất phát và hai điểm tham chiếu đến. Phương thức này tính toán một tuyến đường từ mỗi điểm xuất phát đến mỗi điểm đến, vì vậy, phản hồi sẽ chứa 4 tuyến đường.
Trong mảng, phần tử đầu tiên có chỉ mục là 0, phần tử thứ hai có chỉ mục là 1, v.v.
Thêm mặt nạ trường phản hồi để chỉ định những trường của phản hồi (REST) hoặc ComputeRoutesResponse (gRPC) cần trả về. Trong ví dụ này, hãy định cấu hình yêu cầu để trả về
originIndex,destinationIndex,duration,distanceMeters,status, vàconditioncho mỗi tuyến đường. Để biết thêm thông tin, hãy xem phần Chọn trường cần trả về.
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
Phản hồi chứa 4 tuyến đường có thể có cho tổ hợp tất cả điểm xuất phát và điểm đến.
Xác định từng tuyến đường trong phản hồi bằng cách sử dụng các trường phản hồi originIndex và destinationIndex. Ví dụ: originIndex là 1 trong phản hồi tương ứng với tuyến đường được tính từ điểm tham chiếu tại chỉ mục 1 của mảng origins trong yêu cầu.
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
Ví dụ về gRPC
Để biết ví dụ về yêu cầu gRPC, hãy xem các ví dụ trong phần Ví dụ về yêu cầu gRPC. Ví dụ về Java trên trang đó gọi cả Compute Routes và Compute Route Matrix.