Bạn có thể tính khoảng cách và thời lượng của một tuyến đường cho nhiều điểm xuất phát và điểm đến bằng cách sử dụng phương thức ComputeRouteMatrix
của API Routes Preferred. ComputeRouteMatrix
hỗ trợ cả lệnh gọi gRPC truyền trực tuyến và lệnh gọi HTTP REST.
Với danh sách các cặp điểm xuất phát và điểm đến, ComputeRouteMatrix
sẽ tính toán khoảng cách và thời lượng của một tuyến đường bắt đầu từ mỗi điểm xuất phát và kết thúc tại mỗi điểm đến. Mỗi phần tử của luồng tương ứng với thông tin của một tuyến đường.
Phương thức ComputeRouteMatrix
có một số ưu điểm so với Dịch vụ ma trận khoảng cách:
- Tính năng truyền trực tuyến cho phép trả về các phần tử trước khi tính toán toàn bộ ma trận, giúp giảm độ trễ.
ComputeRouteMatrix
có các tuỳ chọn chi tiết để tính toán lưu lượng truy cập, cho phép bạn đưa ra quyết định đánh đổi chất lượng-độ trễ.- Các yêu cầu được chạy ở mức độ ưu tiên cao hơn trong cơ sở hạ tầng của Google, nhờ đó có khả năng hoạt động cao hơn.
- Bạn có thể chỉ định hướng (hướng di chuyển) và thông tin bên đường cho các điểm trung gian.
- Bạn có thể yêu cầu trả về thông tin về phí cầu đường, cùng với quãng đường và thời gian đến dự kiến.
Bật phương thức ComputeRouteMatrix
Trước khi có thể sử dụng phương thức ComputeRouteMatrix
trong mã, bạn phải bật phương thức đó. Để biết thêm thông tin về cách bật các phương thức API ưu tiên của tuyến, hãy xem phần Bắt đầu.
Sử dụng phương thức ComputeRouteMatrix
Phương thức ComputeRouteMatrix
có sẵn thông qua điểm cuối v1 Routes Preferred.
Hãy xem tài liệu sau đây để biết thêm thông tin chi tiết:
Các bước chung sau đây mô tả cách sử dụng gRPC để gọi phương thức ComputeRouteMatrix
:
Xem các protobuffer cần thiết trong kho lưu trữ googleapis:
https://github.com/googleapis/googleapis/tree/master/google/maps/routes
Xin lưu ý rằng một số hệ thống xây dựng, chẳng hạn như Go, có thể tự động thực hiện việc này cho bạn.
Sử dụng ngôn ngữ và bộ công cụ xây dựng mà bạn muốn, hãy tạo mã protobuffer liên quan.
Tạo yêu cầu. Bạn phải gửi hai phần siêu dữ liệu bắt buộc cùng với yêu cầu:
- Bạn phải đặt X-Goog-Api-Key thành khoá API của mình.
Bạn phải đặt X-Goog-Fieldmask thành danh sách các trường được phân tách bằng dấu phẩy mà bạn yêu cầu trong phản hồi. Ví dụ: X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status. Bạn có thể sử dụng ký tự đại diện (*) để biểu thị tất cả các trường, nhưng bạn không nên làm như vậy. Sử dụng ký tự đại diện để kiểm thử và tìm hiểu phản hồi API, nhưng hãy liệt kê rõ ràng các trường mà bạn muốn trong mặt nạ trường trong mã phát hành công khai.
Để biết thêm thông tin về cách tạo chuỗi mặt nạ trường, hãy xem https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto. Xin lưu ý rằng việc tắt các trường bạn không cần có thể làm giảm độ trễ vì các trường đó có thể cần tính toán thêm. Độ trễ sẽ vẫn ổn định nếu bạn chỉ định các trường cần thiết và các trường mới cần nhiều phép tính hơn sẽ được thêm vào sau.
Gửi yêu cầu của bạn đến
routespreferred.googleapis.com:443
.Bạn phải sử dụng giao thức TLS.
Để biết ví dụ về cách sử dụng phương thức ComputeRouteMatrix
, hãy xem phần Ví dụ về cách tính toán Ma trận tuyến (Beta).
Một đặc điểm khác biệt của phương thức ComputeRouteMatrix
là các mã lỗi có thể được trả về cho toàn bộ luồng hoặc cho từng phần tử. Ví dụ: kết nối luồng sẽ trả về lỗi nếu yêu cầu có định dạng không đúng (ví dụ: không có nguồn gốc nào). Tuy nhiên, nếu lỗi chỉ áp dụng cho một vài phần tử của luồng (ví dụ: đặt mã địa điểm không hợp lệ cho một nguồn gốc), thì chỉ những phần tử bị lỗi mới chứa mã lỗi.
Các phần tử do luồng trả về không được đảm bảo sẽ được trả về theo thứ tự nào. Do đó, mỗi phần tử chứa một origin_index
và một destination_index
. Đối với nguồn gốc và đích đến do yêu cầu chỉ định, nguồn gốc tuyến tương đương với origins[origin_index]
cho một phần tử nhất định và đích đến của tuyến tương đương với destinations[destination_index]
. Các mảng này được lập chỉ mục từ 0. Bạn cần lưu trữ thứ tự danh sách điểm xuất phát và điểm đến.
Tính phí cầu đường
Để biết thông tin về cách tính phí cầu đường, hãy xem phần Tính phí cầu đường.
Để xem ví dụ về cách tính phí cầu đường, hãy xem phần Ví dụ về cách tính toán ma trận tuyến đường.