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

Sử dụng API Tuyến để tính 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 gọi phương thức computeRouteMatrix (REST) hoặc phương thức ComputeRouteMatrix truyền trực tuyến (gRPC).

Với một danh sách các nguồn 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.

Lấy ma trận tuyến đường phương tiện

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

Giới hạn số lượng yêu cầu

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

  • Nếu bạn chỉ định TRAFFIC_AWARE_OPTIMAL, 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 bài viết Chỉ định cách thức và trường hợp cần đưa dữ liệu lưu lượng truy cập vào.

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

Lỗi phản hồi

Một đặc điểm của phương thức Ma trận tuyến tính toán là có thể trả về lỗi 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 sẽ chứa lỗi nếu yêu cầu có định dạng không đúng (ví dụ: yêu cầu không có nguồn gốc).

Tuy nhiên, nếu xảy ra lỗi 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 một tuyến cho một tổ hợp điểm gốc và đích đến), thì chỉ những 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 sẽ lấy danh sách các nguồn gốc và đích đến, đồng thời trả về một luồng chứa thông tin tuyến đường cho từng tổ hợp điểm khởi hành và đích đến. 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ính toán tất cả các tổ hợp tuyến có thể xảy ra thì mới 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 đều chứa một origin_index và một destination_index. Đối với các nguồn gốc và đích đến do yêu cầu chỉ định, 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.

Tính toán một số 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 khởi hành và hai điểm tham chiếu đích. Phương thức này tính toán một tuyến từ mỗi điểm gốc đến mỗi đí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 mỗi 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 chứa 4 tuyến có thể dùng cho tổ hợp tất cả điểm tham chiếu gốc và điểm đến.

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 tại 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 các ví dụ trong Ví dụ về yêu cầu gRPC. Ví dụ Java trên trang đó gọi cả Tuyến tính toán và Ma trận định tuyến tính toán.