使用 Routes API,呼叫 computeRouteMatrix 方法 (REST) 或串流 ComputeRouteMatrix 方法 (gRPC),計算多個起點和目的地的路線距離和時間長度。
只要提供起點和目的地清單,這個方法就會計算從各個起點出發,並在各個目的地結束的路線距離和所需時間。
取得大眾運輸路線矩陣
您也可以計算大眾運輸路線矩陣。如需範例,請參閱「取得大眾運輸路線矩陣」。
要求限制
Compute Route Matrix 方法會對使用地址或地點 ID 的路線控點,以及元素,強制執行下列要求限制。元素是指路線矩陣中每個起點和目的地之間的路線,因此元素數量等於起點數量「乘以」目的地數量。舉例來說,如果您有 10 個起點和 10 個目的地,就會有 100 個元素:
如果路線不是
TRANSIT路線,元素數量不得超過 625。如果指定
TRANSIT路線,元素數量不得超過 100 個。如果指定
TRAFFIC_AWARE_OPTIMAL,元素數量不得超過 100 個。如要進一步瞭解TRAFFIC_AWARE_OPTIMAL,請參閱「指定是否要納入車流量資料以及納入方式」。如果使用地址或地點 ID 指定起點或目的地,則最多可指定 50 個。
回應錯誤
Compute Route Matrix 方法的其中一項功能,是可針對整個回應或個別回應元素傳回錯誤。舉例來說,如果要求格式不正確 (例如沒有起點),整個回應就會包含錯誤。
不過,如果錯誤適用於回應中的部分元素 (例如無法計算某個起點和目的地組合的路線),則只有受錯誤影響的元素會傳回錯誤代碼。
gRPC 串流結果
ComputeRouteMatrix gRPC 方法會接收起點和目的地清單,並傳回串流,其中包含每個起點和目的地組合的路線資訊。由於結果會以串流形式傳回,因此您不必等到所有可能的路線組合都計算完畢,就能開始處理結果。
串流傳回的元素不保證會依任何順序傳回。因此,每個回應元素都包含 origin_index 和 destination_index。對於要求指定的起點和目的地,路線起點相當於指定元素的 origins[origin_index],路線目的地則相當於 destinations[destination_index]。這些陣列是以零為開頭的索引。請務必儲存來源和目的地清單順序。
Compute Route Matrix 範例
在 HTTP 要求中使用 computeRouteMatrix 方法,即可計算路徑矩陣。
HTTP 範例
以下範例顯示 computeRouteMatrix HTTP 要求。在這個範例中,您會:
指定包含兩個起點和兩個目的地路線控點的陣列。這個方法會計算從每個起點到每個目的地的路線,因此回應會包含四條路線。
在陣列中,第一個元素的索引為 0,第二個元素的索引為 1,以此類推。
加入回應欄位遮罩,指定要傳回回應 (REST) 或 ComputeRoutesResponse (gRPC) 的哪些欄位。在這個範例中,請設定要求,為每條路線傳回
originIndex、destinationIndex、duration、distanceMeters、status和condition。詳情請參閱「選擇要傳回的欄位」。
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'
回應包含所有起點和目的地路線控點組合的四種可能路線。
使用 originIndex 和 destinationIndex 回應欄位,識別回應中的每條路線。舉例來說,如果回應中的 originIndex 為 1,代表路線是從要求中 origins 陣列索引 1 的路線控點計算而來。
[ { "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" } ]
gRPC 範例
如需 gRPC 要求範例,請參閱「gRPC 要求範例」。該頁面的 Java 範例會同時呼叫 Compute Routes 和 Compute Route Matrix。