Roads API 會傳回特定路段的規定速限資訊。如果路段的速限會變動,系統會傳回該路段的預設速限。
我們無法保證 Roads API 傳回的速限資料準確無誤。提供的限速資料並非即時資料,且可能為估計值、不準確、不完整和/或過時。請參閱涵蓋範圍詳細資料,瞭解可提供速限資料的地區。
要求
速度限制要求必須透過 HTTPS 傳送,且採用以下格式:
https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY
參數使用方式
必要參數
path
或placeId
參數。path
:最多 100 個經緯度組合的清單,代表路徑。緯度和經度值必須以半形逗號分隔。緯度/經度組合必須以管道字元分隔 ("|")。當您提供path
參數時,API 會先將路徑對齊車輛最有可能行經的道路 (就像snapToRoads
要求一樣),然後判斷相關路段的速限。如果不希望 API 對齊路徑,您必須傳遞placeId
參數,如以下所述。以下範例顯示path
參數,其中包含三個緯度/經度組合:path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796
。placeId
:代表一或多個道路路段的地點 ID。請確認每個地點 ID 都指的是道路路段,而不是其他類型的地點。您可以在每個要求中傳遞最多 100 個地點 ID。API 不會對提供的地點 ID 執行道路對齊。回應中會包含要求中每個地點 ID 的速限。您可以傳送snapToRoads
或nearestRoads
要求來找出相關地點 ID,然後將這些 ID 做為輸入內容提供給speedLimits
要求。以下範例顯示含有兩個地點 ID 的placeId
參數:placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
key
:應用程式的 API 金鑰。每次向 Roads API 傳送要求時,應用程式都必須在每個要求中加入 API 金鑰,以便識別自身。瞭解如何取得金鑰。
選用參數
units
:是否以公里/小時或英里/小時為單位傳回速限。這個值可以設為KPH
或MPH
。預設為KPH
。
回應
speedLimits
回應中可能會出現下列元素:
speedLimits
:道路中繼資料陣列。每個元素都包含下列欄位:placeId
:地點的專屬 ID。Roads API 傳回的所有地點 ID 都會對應至路段。speedLimit
:該路段的速限。units
:傳回KPH
或MPH
。
snappedPoints
:已對齊點的陣列。只有在要求包含path
參數時,才會出現這個陣列。每個點都包含下列欄位:location
:包含latitude
和longitude
值。originalIndex
:整數,表示原始要求中的對應值。要求中的每個值都應對應至回應中的精確值。這些值的索引是從0
開始,因此originalIndex
為4
的點會是傳遞至path
參數的第 5 個經緯度的固定值。placeId
:地點的專屬 ID。Roads API 傳回的所有地點 ID 都會對應至路段。placeId
可在速限要求中傳遞,用於判斷該路段的速限。
warning_message
:包含使用者可見警告的字串。
使用路徑的範例要求
這項要求會在葡萄牙里斯本的 Vasco da Gama 橋上,取得路徑中與指定緯度/經度配對最接近的每個路段速限。
要求
https://roads.googleapis.com/v1/speedLimits?path=38.75807927603043,-9.03741754643809|38.6896537,-9.1770515|41.1399289,-8.6094075&key=YOUR_API_KEY
回應
{ speedLimits: [ { placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE", speedLimit: 105, units: "KPH" }, { placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU", speedLimit: 70, units: "KPH" }, { placeId: "ChIJJ4vQRudkJA0RpednU70A-5M", speedLimit: 55, units: "KPH" } ], snappedPoints: [ { location: { latitude: 38.75807927603043, longitude: -9.037417546438084 }, originalIndex: 0, placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE" }, { location: { latitude: 38.689653701836896, longitude: -9.177051486847693 }, originalIndex: 1, placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU" }, { location: { latitude: 41.13993011767777, longitude: -8.609400794783655 }, originalIndex: 2, placeId: "ChIJJ4vQRudkJA0RpednU70A-5M" } ], warningMessage: "Input path is too sparse. You should provide a path where consecutive points are closer to each other. Refer to the 'path' parameter in Google Roads API documentation." }
請注意上方回應中點密度不足的警告訊息。如果您要要求任意路段上最近的道路路段的速限,請改為使用從 nearestRoads
端點擷取的地點 ID 呼叫 speedLimits
。
使用地點 ID 的範例要求
您可以傳遞道路路段的地點 ID,而非使用經緯度組合。建議您使用 snapToRoads
或 nearestRoads
要求取得路段的位置 ID。當您傳遞地點 ID 時,API 會傳回每個地點 ID 所代表路段的速限。API 不會對提供的地點 ID 套用任何路徑對齊功能。
以下範例會要求葡萄牙里斯本的部分路段,橫跨華斯高達伽馬橋的速限。
要求
https://roads.googleapis.com/v1/speedLimits?placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU&placeId=ChIJJ4vQRudkJA0RpednU70A-5M&key=YOUR_API_KEY
回應
{ "speedLimits": [ { placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE", speedLimit: 105, units: "KPH" }, { placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU", speedLimit: 70, units: "KPH" }, { placeId: "ChIJJ4vQRudkJA0RpednU70A-5M", speedLimit: 55, units: "KPH" } ] }
使用建議
為盡量減少對速限服務的呼叫量,建議您將資產位置的取樣時間間隔設為 5 到 15 分鐘 (確切值取決於資產的移動速度)。如果是靜止不動的資產,只要一個位置樣本就夠了 (不需要多次呼叫)。
建議您在累積到一定的資料量後,才呼叫速限服務,而不是每收到一次行動資產的位置就呼叫 API;這樣有助於減少整體延遲時間。
為什麼部分/所有速度限制都缺少?
缺少 speedLimits
最常見的原因,是要求非路段的速限。
上述範例使用 Vasco da Gama 橋來說明概念;這座橋可讓 E90 公路跨越 Tejo 河。橋本身的地點 ID 為 ChIJUzt97ZEwGQ0RM1JzQfqoDtU。上方回應中的第一個路段是 E90 公路的一部分,其地點 ID 為 ChIJX12duJAwGQ0Ra0d4Oi4jOGE。在示例要求中,如果您將道路地點 ID 替換為橋樑的地點 ID,則回應中的 speedLimits
陣列只會有兩個速限,因為橋樑的地點 ID 並未參照個別道路路段。此外,如果沒有任何地點 ID 是路段,回應就不會包含任何速限。
使用地點 ID 提出限速要求時,請確認每個地點 ID 都代表道路路段,而非其他類型的地點。建議使用 snapToRoads
或 nearestRoads
要求擷取個別路段的地點 ID,因為這兩種要求都能在單一呼叫中傳回多個地點 ID。