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
TRANSIT
tuyế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
,distanceMeters
vàcondition
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 đó:
- Yêu cầu tất cả các trường bằng cách sử dụng mặt nạ trường
['*']
. - 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. 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']