Nhận ma trận tuyến đường

Sử dụng Routes API (API Tuyến đường) để tính toán khoảng cách và thời lượng của một tuyến cho nhiều nguồn gốc và đích đến bằng cách gọi phương thức computeRouteMatrix (REST) hoặc phương thức ComputeRouteMatrix (gRPC) truyền trực tuyến.

Với danh sách điểm gốc và đích đến, phương thức này 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 gốc và kết thúc tại mỗi đích đến.

Tải ma trận tuyến đường chuyển tuyến

Bạn cũng có thể tính toán ma trận tuyến trên phương tiện công cộng. Để biết ví dụ, hãy xem phần Lấy ma trận tuyến đường khi chuyển tuyến.

Hạn mức về yêu cầu

Phương thức Ma trận tính toán thực thi các giới hạn yêu cầu sau đây cho các điểm tham chiếu sử dụng địa chỉ hoặc ID địa điểm và các phần tử. Phần tử là các tuyến giữa từng gốc và đích trong một ma trận tuyến, vì vậy, số lượng phần tử là số nguồn gốc nhân số lượng đích đến. Ví dụ: nếu có 10 nguồn gốc và 10 đích đế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 không phải là tuyến TRANSIT.

  • Nếu bạn chỉ định một tuyến 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à trường hợp có nên bao gồm dữ liệu lưu lượng truy cập hay không.

  • Nếu chỉ định điểm gốc hoặc điểm đến bằng địa chỉ hoặc mã địa điểm, theo cách này, bạn sẽ chỉ định tối đa 50 mã.

Lỗi phản hồi

Một đặc điểm của phương thức Ma trận điện toán tuyến 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 chứa 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 một lỗi xảy ra với một tập hợp con các phần tử trong phản hồi (ví dụ: không thể tính toán tuyến cho một tổ hợp điểm gốc và đích đến), thì chỉ các phần tử chịu ảnh hưởng của lỗi mới trả về mã lỗi.

Kết quả luồng gRPC

Phương thức gRPC ComputeRouteMatrix lấy từ danh sách nguồn gốc và đích đến rồi trả về một luồng chứa thông tin tuyến đường cho từng tổ hợp điểm gốc và đích. 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ả tổ hợp tuyến có thể có đượ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 các gốc và đích đến do yêu cầu chỉ định, gốc của tuyến tương đương với origins[origin_index] đối với 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 phải lưu trữ các đơn đặt hàng trong danh sách điểm khởi hành và điểm đến.

Tính toán ví dụ về ma trận tuyến đường

Sử dụng phương thức computeRouteMatrix trong yêu cầu HTTP để tính toán ma trận tuyến.

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 gốc và hai điểm tham chiếu đích. Phương thức này tính toán tuyến đường từ mỗi gốc tới từng đích đến để phản hồi chứa 4 tuyến.

    Trong mảng, phần tử đầu tiên nằm ở chỉ mục 0, phần tử thứ hai là chỉ mục 1, v.v.

  • Thêm mặt nạ trường phản hồi để chỉ định các 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, statuscondition cho từng tuyến. Để biết thêm thông tin, hãy xem phần Chọn các 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 này chứa 4 tuyến có thể sử dụng để kết hợp tất cả điểm tham chiếu gốc và đích.

Xác định từng tuyến trong phản hồi bằng cách sử dụng các trường phản hồi originIndexdestinationIndex. Ví dụ: originIndex là 1 trong phản hồi tương ứng với một tuyến được tính từ điểm tham chiếu ở 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

Ví dụ về các yêu cầu gRPC, hãy xem ví dụ trong bài viết Ví dụ về yêu cầu gRPC. Ví dụ về Java trên trang đó gọi cả Tuyến tính toán và Ma trận tuyến tính (Compute Route Matrix).