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

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

Ma trận tuyến đường là một mảng hai chiều gồm thông tin về tuyến đường, trong đó các hàng tương ứng với điểm xuất phát và các cột tương ứng với điểm đến. Với danh sách các điểm xuất phát và điểm đến, lớp Ma trận tuyến đường 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. Sử dụng lớp Ma trận 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à điểm đến.

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

Phương thức RouteMatrix.computeRouteMatrix() á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 cách sử dụng địa chỉ hoặc các thực thể Địa điểm và cho các mục. Các mục là 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 mục 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 xuất phát và 10 điểm đến, thì bạn sẽ có 100 mục:

  • Số lượng mục 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 TRANSITtuyến đường, thì số lượng mục không được vượt quá 100.
  • Nếu bạn chỉ định TRAFFIC_AWARE_OPTIMAL, thì số lượng mặt hàng không được vượt quá 100.
  • Nếu chỉ định điểm xuất phát hoặc điểm đến bằng địa chỉ hoặc thực thể Địa điểm, bạn có thể chỉ định tối đa 50 điểm theo cách này.

Ví dụ về yêu cầu ma trận tuyến đường

Ví dụ sau đây minh hoạ một ComputeRouteMatrixRequest. Ví dụ này thực hiện những việc sau:

  • Cho biết cách 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 đích đế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, 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.
  • Chỉ định các trường cần trả về. Trong ví dụ này, hãy định cấu hình yêu cầu để trả về durationMillis, distanceMeterscondition cho từng tuyến đường.

TypeScript

const request = {
  origins: [origin1, origin2], 
  destinations: [destinationA, destinationB],
  travelMode: 'DRIVING',
  units: google.maps.UnitSystem.METRIC,
  fields: ['distanceMeters', 'durationMillis', 'condition'],
};

JavaScript

const request = {
    origins: [origin1, origin2],
    destinations: [destinationA, destinationB],
    travelMode: 'DRIVING',
    units: google.maps.UnitSystem.METRIC,
    fields: ['distanceMeters', 'durationMillis', 'condition'],
};

Phản hồi chứa 4 tuyến đường có thể có cho tổ hợp tất cả các điểm tham chiếu của điểm xuất phát và điểm đến, như minh hoạ trong ví dụ sau:

"matrix": {
  "rows": [
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 202587,
          "durationMillis": 10040000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 252734,
          "durationMillis": 12240000
        }
      ]
    },
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 166135,
          "durationMillis": 6596000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 216282,
          "durationMillis": 8797000
        }
      ]
    }
  ]
}
    

Xác định từng tuyến đường trong kết quả bằng cách sử dụng chỉ mục điểm bắt đầu và điểm đến để tìm RouteMatrixItem tương ứng trong mảng 2D. Ví dụ: RouteMatrixItem mô tả tuyến đường được tính từ điểm xuất phát ở chỉ mục 1 và điểm đến 0 trong yêu cầu sẽ nằm ở phần tử thứ 2 của mảng RouteMatrix.rows và phần tử thứ 1 của mảng RouteMatrixRow.items.

Đoạn mã sau đây cho thấy cách xác định RouteMatrixItem để tìm tuyến đường cho một điểm xuất phát và điểm đến cụ thể:

// Find the route for origin 'x' and destination 'y'.
const {matrix} = await RouteMatrix.computeRouteMatrix(request);
const myRouteMatrixItem = matrix.rows[x].items[y];
    

Chọn các trường cần trả về

Khi yêu cầu một ma trận tuyến đường, bạn phải sử dụng mặt nạ trường để chỉ định thông tin mà phản hồi sẽ trả về.

Việc sử dụng mặt nạ trường cũng đảm bảo rằng bạn không yêu cầu dữ liệu không cần thiết, từ đó giúp giảm độ trễ phản hồi và tránh trả về thông tin mà hệ thống của bạn không cần.

Chỉ định danh sách các trường bạn cần bằng cách đặt thuộc tính ComputeRoutesMatrixRequest.fields, như trong đoạn mã sau:

fields: ['durationMillis', 'distanceMeters', 'condition'],
    

Xác định những mặt nạ trường cần sử dụng

Sau đây là cách xác định những trường bạn muốn sử dụng và tạo mặt nạ trường cho các trường đó:

  1. Yêu cầu tất cả các trường bằng cách sử dụng mặt nạ trường ['*'].
  2. Xem hệ thống phân cấp của các trường trong lớp RouteMatrixItem cho các trường bạn muốn.
  3. Tạo mặt nạ trường bằng cách sử dụng hệ phân cấp của các trường xuất hiện ở bước trước, theo định dạng sau:

    topLevelField[.secondLevelField][.thirdLevelField][...]

Ví dụ: đối với RouteMatrixItem này:

  "travelAdvisory": {
    "fuelConsumptionMicroliters": 0,
    "tollInfo": {
      "estimatedPrices": [
        {
          "currencyCode": "USD",
          "units": 4,
          "nanos": 400000000
        }
      ]
    }
  },
    

Nếu bạn chỉ muốn trả về trường tollInfo cho RouteMatrixItem, thì mặt nạ trường của bạn sẽ như sau:

fields: ['travelAdvisory.tollInfo']

Nếu bạn muốn yêu cầu mức tiêu thụ nhiên liệu ước tính, thì mặt nạ trường của bạn sẽ như sau:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

Nếu bạn muốn yêu cầu cả hai, thì mặt nạ trường của bạn sẽ như sau:

fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']

Và nếu bạn muốn yêu cầu toàn bộ bộ thông tin tư vấn du lịch, thì mặt nạ trường của bạn sẽ như sau:

fields: ['travelAdvisory']