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

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

Với danh sách điểm xuất phát và điểm đế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ừ mỗi điểm xuất phát và kết thúc tại mỗi điểm đến.

Nhận ma trận tuyến phương tiện công cộng

Bạn cũng có thể tính toán ma trận tuyến đường 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 về phương tiện công cộng.

Giới hạn yêu cầu

Các phương thức Tính toán ma trận tuyến đường thực thi các giới hạn yêu cầu sau đây cho các điểm trung gian bằ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 đường giữa mỗi điểm xuất phát và điểm đến trong ma trận tuyến đường, do đó, số lượng phần tử là số lượng điểm xuất phát lần số lượng điểm đến. Ví dụ: nếu có 10 điểm xuất phát và 10 điểm đế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, 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à liệu có nên đưa dữ liệu lưu lượng truy cập vào hay không.

  • 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 có thể chỉ định tối đa 50 điểm theo cách này.

Lỗi phản hồi

Một tính năng của các phương thức Tính toán ma trậ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 riêng lẻ. 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 chính xác (ví dụ: không có nguồn gốc nào).

Tuy nhiên, nếu lỗi áp dụng cho một 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 tuyến đường cho một tổ hợp điểm xuất phát và điểm đế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ả của luồng gRPC

Phương thức gRPC ComputeRouteMatrix lấy danh sách các điểm xuất phát và điểm đến, đồng thời trả về một luồng chứa thông tin tuyến đường cho mỗi tổ hợp điểm xuất phát và điểm đến. Vì kết quả được trả về dưới dạng luồng, nên bạn không phải đợi đến khi tất cả các tổ hợp tuyến đường có thể có được tính toán xong 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 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 nguồn gốc và đích đến do yêu cầu chỉ định, nguồn gốc tuyến tương đương với origins[origin_index] cho 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 từ 0. Điều quan trọng là phải lưu trữ thứ tự danh sách nguồn gốc và đích đến.

Ví dụ về cách tính toán 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 xuất phát và hai điểm đến. Phương thức này tính toán một tuyến đường từ mỗi điểm xuất phát đến mỗi điểm đến, vì vậy, phản hồi sẽ chứa 4 tuyến đường.

    Trong mảng, phần tử đầu tiên có chỉ mục là 0, phần tử thứ hai có chỉ mục là 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 trường để 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 đường có thể có cho tổ hợp tất cả các điểm trung gian nguồn 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 đường được tính từ điểm trung gian 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ụ: các yêu cầu gRPC, hãy xem các ví dụ về Yêu cầu gRPC mẫu. Ví dụ về Java trên trang đó gọi cả Compute Routes (Tính toán tuyến đường) và Compute Route Matrix (Tính toán ma trận tuyến đường).