Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Nhà phát triển ở Khu vực kinh tế Châu Âu (EEA)
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.
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, vì vậy, 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 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 nguồn gốc và đích đế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, status và condition cho mỗi tuyến. Để biết thêm thông tin, hãy xem phần Chọn trường để trả về.
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 originIndex và destinationIndex. 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.
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).
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-06-20 UTC."],[[["\u003cp\u003eGoogle Maps Routes API calculates distance and duration for routes with multiple origins and destinations using the \u003ccode\u003ecomputeRouteMatrix\u003c/code\u003e method.\u003c/p\u003e\n"],["\u003cp\u003eRequest limits apply to the number of elements (routes between origin-destination pairs), varying based on route type and traffic settings.\u003c/p\u003e\n"],["\u003cp\u003eResponses can contain errors for the entire request or individual route elements, providing granular feedback on route calculation success.\u003c/p\u003e\n"],["\u003cp\u003eThe gRPC method offers stream results, allowing processing of route information as it becomes available, without waiting for all calculations to complete.\u003c/p\u003e\n"],["\u003cp\u003eExamples demonstrate how to use the API with HTTP requests and interpret the response, identifying routes using origin and destination indices.\u003c/p\u003e\n"]]],["The Routes API calculates route distances and durations for multiple origins and destinations using `computeRouteMatrix`. It supports REST and gRPC methods, with gRPC offering streaming results. Key actions include specifying origins and destinations, setting travel modes (like transit), and handling request limits (e.g., element counts for `TRANSIT` or `TRAFFIC_AWARE_OPTIMAL` routes). Errors can be response-wide or element-specific. The response provides `originIndex`, `destinationIndex`, `duration`, `distanceMeters`, and `status` for each route.\n"],null,["# Get a route matrix\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nUse the Routes API to calculate the distance and duration of a route for\nmultiple origins and destinations by calling the\n[computeRouteMatrix](/maps/documentation/routes/reference/rest/v2/TopLevel/computeRouteMatrix) method\n(REST) or the streaming\n[ComputeRouteMatrix](/maps/documentation/routes/reference/rpc/google.maps.routing.v2#google.maps.routing.v2.Routes.ComputeRouteMatrix)\nmethod (gRPC).\n\nGiven a list of origins and destinations, the method\ncalculates the distance and duration of a route starting at each origin\nand ending at each destination.\n\n### Get a transit route matrix\n\nYou can also compute a route matrix on transit. For an\nexample, see [Get a route matrix on transit](/maps/documentation/routes/transit-rm).\n\n### Request limits\n\nThe Compute Route Matrix methods enforce the following request\nlimits for waypoints using address or placeIDs, and for elements. Elements are\nthe routes between each origin and destination in a route matrix, so the number\nof elements is the number of origins *times* the number of destinations. For\nexample, if you have 10 origins and 10 destinations, you have 100 elements:\n\n- **The number of elements** cannot exceed 625 for routes\n that are not `TRANSIT` routes.\n\n- **If you specify a `TRANSIT` route**, the number of elements cannot exceed\n 100.\n\n- **If you specify `TRAFFIC_AWARE_OPTIMAL`** , the number of elements cannot\n exceed 100. For more information about `TRAFFIC_AWARE_OPTIMAL`, see\n [Specify how and if to include traffic data](/maps/documentation/routes/config_trade_offs).\n\n- **If you specify origins or destinations using address or place ID**,\n you specify up to 50 total this way.\n\n### Response errors\n\nOne feature of the Compute Route Matrix methods is that errors can\nbe returned either for the entire response or for individual response elements.\nFor example, the entire response contains an error if the request is malformed\n(for example, it has zero origins).\n\nHowever, if an error applies to a subset of\nelements in the response (for example, a route cannot be computed for one\ncombination of origin and destination), then only the elements affected by the\nerror return an error code.\n\n### gRPC Stream results\n\nThe [ComputeRouteMatrix](/maps/documentation/routes/reference/rpc/google.maps.routing.v2#google.maps.routing.v2.Routes.ComputeRouteMatrix)\ngRPC method takes in a list of origins and destinations and returns a stream\ncontaining route information for each combination of origin and destination.\nBecause the results are returned as a stream, you don't have to wait until all\npossible route combinations are calculated before you can start to process the\nresults.\n| **Note:** Stream results are not supported by the REST API.\n\nThe elements returned by the stream are not guaranteed to be returned in any\norder. Therefore, each response element contains an `origin_index` and a\n`destination_index`. For the origins and destinations specified by the request,\nthe route origin is equivalent to `origins[origin_index]` for a given element\nand the route destination is equivalent to `destinations[destination_index]`.\nThese arrays are zero-indexed. It is important to store the origin and\ndestination list orders.\n\nCompute a Route Matrix Examples\n-------------------------------\n\nUse the [computeRouteMatrix](/maps/documentation/routes/reference/rest/v2/TopLevel/computeRouteMatrix)\nmethod in an HTTP request to compute a route matrix.\n\n### HTTP example\n\nThe following example shows a `computeRouteMatrix` HTTP request. In this example\nyou:\n\n- Specify an array of two origin and two destination waypoints. The method\n calculates a route from each origin to each destination so the response\n contains four routes.\n\n In the array, the first element is at an index of 0, the second is index 1,\n and so forth.\n- Include a response field mask to specify which fields of the\n [response](/maps/documentation/routes/reference/rest/v2/TopLevel/computeRouteMatrix#response-body)\n (REST) or\n [ComputeRoutesResponse](/maps/documentation/routes/reference/rpc/google.maps.routing.v2#computeroutesresponse)\n (gRPC) to return. In this example, configure the request to return\n `originIndex`, `destinationIndex`, `duration`, `distanceMeters`, `status`,\n and `condition` for each route. For more information, see\n [Choose fields to return](/maps/documentation/routes/choose_fields).\n\n```json\ncurl -X POST -d '{\n \"origins\": [\n {\n \"waypoint\": {\n \"location\": {\n \"latLng\": {\n \"latitude\": 37.420761,\n \"longitude\": -122.081356\n }\n }\n },\n \"routeModifiers\": { \"avoid_ferries\": true}\n },\n {\n \"waypoint\": {\n \"location\": {\n \"latLng\": {\n \"latitude\": 37.403184,\n \"longitude\": -122.097371\n }\n }\n },\n \"routeModifiers\": { \"avoid_ferries\": true}\n }\n ],\n \"destinations\": [\n {\n \"waypoint\": {\n \"location\": {\n \"latLng\": {\n \"latitude\": 37.420999,\n \"longitude\": -122.086894\n }\n }\n }\n },\n {\n \"waypoint\": {\n \"location\": {\n \"latLng\": {\n \"latitude\": 37.383047,\n \"longitude\": -122.044651\n }\n }\n }\n }\n ],\n \"travelMode\": \"DRIVE\",\n \"routingPreference\": \"TRAFFIC_AWARE\"\n}' \\\n-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \\\n-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \\\n'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'\n```\n\nThe response contains the four possible routes for the combination of all origin\nand destination waypoints.\n| **Note:** For detailed description of the response, see [Understand the compute\n| route matrix response](/maps/documentation/routes/understand-rm-response).\n\nIdentify each route in the response by using the `originIndex` and\n`destinationIndex` response fields. For example, an `originIndex` of 1 in the\nresponse corresponds to a route calculated from the waypoint at index 1 of the\n`origins` array in the request. \n\n```json\n[\n {\n \"originIndex\": 0,\n \"destinationIndex\": 0,\n \"status\": {},\n \"distanceMeters\": 822,\n \"duration\": \"160s\",\n \"condition\": \"ROUTE_EXISTS\"\n },\n {\n \"originIndex\": 1,\n \"destinationIndex\": 0,\n \"status\": {},\n \"distanceMeters\": 2919,\n \"duration\": \"361s\",\n \"condition\": \"ROUTE_EXISTS\"\n },\n {\n \"originIndex\": 1,\n \"destinationIndex\": 1,\n \"status\": {},\n \"distanceMeters\": 5598,\n \"duration\": \"402s\",\n \"condition\": \"ROUTE_EXISTS\"\n },\n {\n \"originIndex\": 0,\n \"destinationIndex\": 1,\n \"status\": {},\n \"distanceMeters\": 7259,\n \"duration\": \"712s\",\n \"condition\": \"ROUTE_EXISTS\"\n }\n]\n```\n\n### gRPC examples\n\nFor example [gRPC](https://www.grpc.io/) requests, see the examples on\n[Example gRPC request](/maps/documentation/routes/compute_route_directions#grpc-distance-example). The Java\nexample on that page calls both the Compute Routes and\nCompute Route Matrix."]]