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 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 ưu tiên cho tuyến đường. ComputeRouteMatrix hỗ trợ cả lệnh gọi gRPC truyền trực tuyến và lệnh gọi HTTP REST.

Khi có danh sách các cặp điểm khởi hành và điểm đến, ComputeRouteMatrix 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 khởi hành 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.

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 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 độ trễ về chất lượng.
  • 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, giúp tăng khả năng đáp ứng.
  • Bạn có thể chỉ định tiêu đề (hướng đi) và thông tin bên đường cho các điểm tham chiếu.
  • Bạn có thể yêu cầu trả lại thông tin thu phí cầu đường, cùng với khoảng cách trên tuyến đường và giờ đến dự kiến.

Bật phương thức ComputeRouteMatrix

Bạn phải bật phương thức ComputeRouteMatrix trước khi có thể sử dụng 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 cho Tuyến đường, hãy xem phần Bắt đầu.

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

Phương thức ComputeRouteMatrix có thể sử dụng thông qua điểm cuối v1 của Tuyến ưu tiên.

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

Kiến trúc chuyển trạng thái đại diện (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. Xem các bộ đệm protobuffer cần thiết từ 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 làm việc này cho bạn.

  2. Bằng cách sử dụng ngôn ngữ ưu tiên và bộ công cụ bản dựng, tạo mã protobuffer thích hợp.

  3. Tạo yêu cầu. 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.
    • 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. Tuy nhiên, bạn không nên làm vậy. Hãy dùng ký tự đại diện để kiểm thử và hiểu rõ phản hồi của API, nhưng hãy liệt kê rõ các trường bạn muốn ở mặt nạ trường trong mã phát hành chính thức.

      Để 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 mà bạn không cần có thể làm giảm độ trễ vì các trường đó có thể cần phải 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à những trường mới yêu cầu phép tính thêm sẽ được thêm vào sau này.

  4. Gửi yêu cầu của bạn tới 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 Ví dụ về tính toán ma trận tuyến đường (Beta).

Một đặc đ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 các phần tử riêng lẻ. Ví dụ: kết nối luồng trả về lỗi nếu yêu cầu không đúng định dạng (ví dụ: yêu cầu không có nguồn gốc). Tuy nhiên, nếu lỗi chỉ xảy ra với 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 điểm khởi hành), thì chỉ những phần tử chịu ảnh hưởng của lỗi đó mới chứa mã lỗi.

Các phần tử do luồng trả về không đảm bảo được trả về theo bất kỳ thứ tự nào. Do đó, mỗi phần tử chứa một origin_index và một destination_index. Đối với các nguồn gốc và đích đến chỉ định theo yêu cầu, nguồn gốc của tuyến tương đương với origins[origin_index] của 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 bằng 0. Bạn cần lưu trữ các đơn đặt hàng trong danh sách điểm khởi hành và đích đến.

Đang tính phí cầu đường

Để biết thông tin về cách tính phí cầu đường, hãy xem bài viết Tính phí cầu đường.

Để biết ví dụ về cách tính phí cầu đường, hãy xem phần Tính toán ví dụ về ma trận tuyến đường.