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 gian của một tuyến đường 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 ComputeRouteMatrix (gRPC) truyền trực tuyến.

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ại 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 đường giao thông 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. Để xem ví dụ, hãy xem phần Lấy ma trận tuyến đường bằng phương tiện công cộng.

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

Các phương thức Compute Route Matrix áp dụng các giới hạn yêu cầu sau đây cho các điểm tham chiếu 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, vì vậy, số lượng phần tử là số lượng điểm xuất phát nhân với 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 những tuyến đường không phải là tuyến đường TRANSIT.

  • Nếu bạn chỉ định một TRANSIT tuyến đường, 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à việc có nên thêm dữ liệu giao thông 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 Compute Route Matrix 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 riêng lẻ. Ví dụ: toàn bộ phản hồi sẽ chứa lỗi nếu yêu cầu bị lỗi (ví dụ: có 0 nguồn gốc).

Tuy nhiên, nếu một lỗi áp dụng cho một nhóm nhỏ các phần tử trong phản hồi (ví dụ: không thể tính toán một tuyến đường cho một tổ hợp điểm bắt đầu và điểm đế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 ComputeRouteMatrix gRPC nhận một 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 về 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 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 đ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. Điều quan trọng là phải lưu trữ thứ tự của danh sách nguồn và đích đến.

Ví dụ về cách tính 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 minh hoạ một yêu cầu HTTP computeRouteMatrix. Trong ví dụ này, bạn:

  • Chỉ định một mảng gồm 2 điểm tham chiếu của điểm xuất phát và 2 điểm tham chiếu của điểm đến. Phương thức này tính toán một tuyến đường từ mỗi điểm khởi hành đến mỗi điểm đến, do đó, phản hồi 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 mặt nạ trường phản hồi để chỉ định những trường nào 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 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 đường có thể cho tổ hợp tất cả các điểm tham chiếu của điểm bắt đầu 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 có giá trị 1 trong phản hồi tương ứng với một tuyến đường được tính từ điểm đánh dấ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ụ: yêu cầu gRPC, hãy xem các ví dụ về Ví dụ về yêu cầu gRPC. Ví dụ về Java trên trang đó gọi cả Compute Routes và Compute Route Matrix.