取得路徑矩陣

歐洲經濟區 (EEA) 開發人員

呼叫 computeRouteMatrix 方法 (REST) 或串流 ComputeRouteMatrix 方法 (gRPC),即可使用 Routes API 計算多個起點和目的地的路線距離和時間。

這個方法會根據起點和目的地清單,計算從每個起點出發並抵達每個目的地的路線距離和時間。

取得大眾運輸路線矩陣

您也可以計算大眾運輸路線矩陣。如需範例,請參閱取得大眾運輸路線矩陣

要求限制

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_indexdestination_index。對於要求指定的起點和目的地,路徑起點相當於指定元素的 origins[origin_index],路徑目的地則相當於 destinations[destination_index]。這些陣列是以零為開頭的索引。請務必儲存來源和目的地清單訂單。

計算路線矩陣範例

在 HTTP 要求中使用 computeRouteMatrix 方法,即可計算路徑矩陣。

HTTP 範例

以下範例顯示 computeRouteMatrix HTTP 要求。在這個範例中,

  • 指定兩個起點和兩個目的地的路線控點陣列。這個方法會計算從每個起點到每個目的地的路線,因此回應會包含四條路線。

    在陣列中,第一個元素的索引為 0,第二個元素的索引為 1,以此類推。

  • 加入回應欄位遮罩,指定要傳回回應 (REST) 或 ComputeRoutesResponse (gRPC) 的哪些欄位。在本範例中,請將要求設定為傳回每個路徑的 originIndexdestinationIndexdurationdistanceMetersstatuscondition。詳情請參閱「選擇要傳回的欄位」。

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'

回應包含所有起點和目的地中途點組合的四條可能路線。

使用 originIndexdestinationIndex 回應欄位,找出回應中的每條路線。舉例來說,回應中的 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。