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

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

Với một danh sách nguồn gốc và đích đến, phương thức tính 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. Để có một ví dụ: hãy xem Tải ma trận tuyến đường khi chuyển tuyến.

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 thực thi yêu cầu sau giới hạn cho các điểm tham chiếu sử dụng địa chỉ hoặc mã địa điểm và cho các phần tử. Các phần tử là các tuyến giữa từng điểm khởi hành và điểm đến trong một ma trận tuyến đường, do đó số lượng của phần tử là số nguồn gốc x số lượng đích đến. Để ví dụ: nếu có 10 điểm 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 cho các tuyến đường không phải là các 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ử sẽ không thể vượt quá 100. Để biết thêm thông tin về TRAFFIC_AWARE_OPTIMAL, hãy xem Chỉ định cách thức và trường hợp nên đưa dữ liệu lưu lượng truy cập vào.

  • Nếu bạn 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 chỉ định tối đa 50 tổng số 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 định tuyến tính toán là lỗi có thể được trả về cho toàn bộ phản hồi hoặc cho từng yếu 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ụ: nó không có nguồn gốc).

Tuy nhiên, nếu lỗi áp dụng với tập hợp con của 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 phần tử tổ hợp điểm khởi hành và điểm đến), thì chỉ những phần tử chịu ảnh hưởng của lỗi sẽ trả về mã lỗi.

Kết quả luồng gRPC

ComputeRouteMatrix Phương thức gRPC lấy danh sách các nguồn 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 khởi hành và điểm đến. Vì kết quả được trả về dưới dạng luồng, bạn không phải đợi cho đến khi các tổ hợp tuyến đường khả thi sẽ được tính toán trước khi bạn 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ề trong bất kỳ đơn đặt hàng. Do đó, mỗi phần tử phản hồi đều chứa origin_indexdestination_index. Đối với các nguồn gốc và đích đến được yêu cầu xác định, điểm 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à điểm đến của tuyến đường này tương đương với destinations[destination_index]. Các mảng này được lập chỉ mục bằng 0. Quan trọng là bạn phải lưu trữ nguồn gốc và đơn đặt hàng trong danh sách đích.

Tính toán một số ví dụ về ma trận tuyến đường

Sử dụng computeRouteMatrix trong yêu cầu HTTP để tính toán ma trận định 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 sẽ tính toán một tuyến từ mỗi điểm gốc tới mỗi đích đến để phản hồi chứa 4 tuyến.

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

  • Bao gồm một mặt nạ trường phản hồi để chỉ định các trường nào của phản hồi (REST) hoặc ComputeRoutesResponse (gRPC) để trả về. Trong ví dụ này, hãy định cấu hình yêu cầu để trả về originIndex, destinationIndex, duration, distanceMeters, status, và condition cho mỗi tuyến đường. Để biết thêm thông tin, hãy xem 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 của tất cả các nguồn gốc và điểm tham chiếu đích.

Xác định từng tuyến trong phản hồi bằng cách sử dụng originIndexdestinationIndex trường phản hồi. Ví dụ: originIndex là 1 trong thuộc tính 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ụ trên Ví dụ về yêu cầu gRPC. Java ví dụ trên trang đó gọi cả Tuyến điện toán và Tính toán ma trận định tuyến.