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 nguồn gốc và đích đế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.

Cho trước một danh sách các cặp điểm khởi hành và đích đến, ComputeRouteMatrix tính khoảng cách và thời lượng của một tuyến đường xuất phát tại mỗi điểm gốc và kết thúc tại mỗi đích đến. Mỗi phần tử của luồng tương ứng với thông tin về 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 toàn bộ ma trận đã được tính toá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 độ trễ về chất lượng.
  • 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 sử dụng cao hơn.
  • Bạn có thể chỉ định tiêu đề (hướng đi) và lề đường cho các điểm tham chiếu.
  • Bạn có thể yêu cầu trả lại thông tin phí cầu đường, cùng với khoảng cách tuyến đường và giờ đế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ã của mình, bạn phải bật tính năng đó. Để biết thêm thông tin về cách bật 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ó sẵn thông qua Tuyến đường ưu tiên điểm cuối 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

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ụ xây dựng, hãy tạo mã bộ đệm protobuffer.

  3. Tạo yêu cầu. Bạn phải gửi hai phần siêu dữ liệu bắt buộc 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 câu trả lời. Ví dụ: X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,trạng thái. Bạn có thể sử dụng ký tự đại diện (*) để biểu thị tất cả các trường, nhưng đó là không khuyến khích. Sử dụng ký tự đại diện để kiểm tra và nắm được Phản hồi của API, nhưng 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. 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ì những trường đó có thể yêu cầu tính toán thêm. Độ trễ của bạn sẽ giữ nguyên ổn định nếu bạn chỉ định các trường bạn cần và các trường mới yêu cầu các phép tính khác sẽ được thêm vào sau này.

  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.

Để 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à có thể trả về mã lỗi cho toàn bộ luồng hoặc cho từng mã phần tử. 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ụ: không có nguồn gốc). Tuy nhiên, nếu xảy ra lỗi chỉ một vài thành phần của luồng (ví dụ: đặt ID địa điểm không hợp lệ cho một nguồn gốc), thì chỉ những phần tử chịu ảnh hưởng của lỗi đó mới chứa mã lỗi.

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

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