Tính toán ma trận tuyến đường

Bạn có thể tính toán 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 Routes Preferred API. ComputeRouteMatrix hỗ trợ cả lệnh gọi gRPC truyền phát trực tiếp 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ại 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 cho một tuyến đường duy nhất.

Phương thức ComputeRouteMatrix có một số ưu điểm so với Distance Matrix Service:

  • Truyền phát trực tiếp cho phép trả về các phần tử trước khi toàn bộ ma trận được tính toán, giúp giảm độ trễ.
  • ComputeRouteMatrix có các lựa 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 giữa chất lượng và độ 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, dẫn đến khả năng cung cấp cao hơn.
  • Bạn có thể chỉ định thông tin về hướng (hướng di chuyển) và phía đường cho các điểm tham chiếu.
  • Bạn có thể yêu cầu trả về thông tin về phí cầu đường, cùng với khoảng cách và thời gian đến dự kiến của tuyến đường.

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 này. Để biết thêm thông tin về cách bật các phương thức Routes Preferred API, hãy xem phần Bắt đầu sử dụng.

Sử dụng phương thức ComputeRouteMatrix

Phương thức ComputeRouteMatrix có sẵn thông qua điểm cuối Routes Preferred v1.

Hãy xem tài liệu sau để biết thêm thông tin chi tiết:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

Các bước chung sau đây mô tả cách sử dụng gRPC để gọi phương thức ComputeRouteMatrix:

  1. Kiểm tra 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.

  2. 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 có liên quan.

  3. Tạo yêu cầu của bạn. Bạn phải gửi 2 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 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 bạn muốn trong mặt nạ trường trong mã sản xuất của bạn.

      Để 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 không cần thiết có thể giảm độ trễ vì những trường đó có thể yêu cầu tính toán thêm. Độ trễ của bạn sẽ ổ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 thêm nhiều phép tính hơn sẽ được thêm sau.

  4. 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.

Để xem 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 đường (Bản thử nghiệm).

Một điểm khác biệt của phương thức ComputeRouteMatrix là mã lỗi có thể được trả về cho toàn bộ luồng hoặc cho từng phần tử riêng lẻ. Ví dụ: kết nối truyền trực tuyến sẽ trả về lỗi nếu yêu cầu có định dạng không đúng (ví dụ: có 0 nguồn). Tuy nhiên, nếu lỗi chỉ áp dụng cho một số phần tử của luồng (ví dụ: đặt Mã địa điểm không hợp lệ cho một nguồn), thì chỉ những phần tử bị ảnh hưởng bởi 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 bất kỳ thứ tự nào. Do đó, mỗi phần tử đều chứa một origin_index và một destination_index. Đối với điểm khởi hành và điểm đến do yêu cầu chỉ định, điểm khởi hành 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 đế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 ma trận tuyến đường.