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

Nhà phát triển ở Khu vực kinh tế Châu Âu (EEA)

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

Với danh sách điểm khởi hành 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ại mỗi điểm khởi hành và kết thúc tại mỗi điểm đến.

Nhận ma trận tuyến đường công cộng

Bạn cũng có thể tính toán ma trận tuyến đường công cộng. Để xem ví dụ, hãy xem bài viết Nhận ma trận tuyến đường 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 đối với các điểm tham chiếu bằng cách sử dụng địa chỉ hoặc placeID và đối với các phần tử. Các phần tử là tuyến đường giữa mỗi điểm khởi hành và điểm đến trong ma trận tuyến đường, vì vậy, số lượng phần tử là số lượng điểm khởi hành nhân số lượng điểm đến. Ví dụ: nếu bạn có 10 điểm khởi hành và 10 điểm đến, thì 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 đường không phải là tuyến đường TRANSIT.

  • Nếu bạn chỉ định tuyến đường 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 bài viết Chỉ định cách và có nên đưa dữ liệu giao thông vào hay không.

  • Nếu bạn chỉ định điểm khởi hành hoặc điểm đến bằng địa chỉ hoặc mã địa điểm, thì 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 đường 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 bị định dạng sai (ví dụ: có 0 điểm khởi hành).

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

Kết quả luồng gRPC

Phương thức ComputeRouteMatrix gRPC nhận danh sách điểm khởi hành 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 khởi hành 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 cho đến khi tất cả các tổ hợp tuyến đường có thể đượ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 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 điểm khởi hành và điểm đến do yêu cầu chỉ định, điểm khởi hành của tuyến đường tương đương với origins[origin_index] cho một phần tử nhất định và điểm đến của tuyến đường tương đương với destinations[destination_index]. Các mảng này được lập chỉ mục từ 0. Bạn cần lưu trữ thứ tự danh sách điểm khởi hành và điểm đến.

Ví dụ về 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 đường.

Ví dụ về HTTP

Ví dụ sau đây cho thấy yêu cầu HTTP computeRouteMatrix. Trong ví dụ này, bạn:

  • Chỉ định một mảng gồm 2 điểm khởi hành và 2 điểm đến. Phương thức này tính toán tuyến đường từ mỗi điểm khởi hành đến mỗi điểm đến, vì vậy, phản hồi chứa 4 tuyến đường.

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

  • Đưa vào 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 đườ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 đường có thể có cho tổ hợp tất cả các điểm khởi hành và điểm đến.

Xác định từng tuyến đường 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 tuyến đường được tính toán 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

Để xem ví dụ về yêu cầu gRPC, hãy xem các ví dụ trong bài viết Yêu cầu gRPC mẫu. Ví dụ về Java trên trang đó gọi cả Compute Routes và Compute Route Matrix.