速限

Roads API 會傳回特定路段的規定速限。如果路段的速限會變動,系統會傳回該路段的預設速限。

無法保證 Roads API 傳回的速限資料準確無誤。提供的速限資料並非即時資料,可能為估計值,且可能不準確、不完整或過時。如要查看提供速限資料的地區,請參閱涵蓋範圍詳細資料

要求

使用 HTTPS 傳送速限要求,格式如下:

https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY

參數使用方式

必要參數

  • pathplaceId 參數。
    • 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 的速限。您可以傳送 snapToRoadsnearestRoads 要求,找出相關地點 ID,然後將這些 ID 做為 speedLimits 要求的輸入內容。以下範例顯示含有兩個地點 ID 的 placeId 參數: placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
  • key:應用程式的 API 金鑰。應用程式每次傳送要求至 Roads API 時,都必須在要求中加入 API 金鑰,以識別自身。瞭解如何取得金鑰

選用參數

  • units - 是否要以公里或英里/小時為單位傳回速限。這可以設為 KPHMPH。預設為 KPH

回應

speedLimits 回應中可能包含下列元素:

  • speedLimits:道路中繼資料陣列。每個元素都包含下列欄位:
    • placeId:地點的專屬 ID。Roads API 傳回的所有地點 ID 都會對應至路段。
    • speedLimit:該路段的速限。
    • units:傳回 KPHMPH
  • snappedPoints:對齊的點陣列。只有在要求包含 path 參數時,才會出現這個陣列。每個點都包含下列欄位:
    • location:包含 latitudelongitude 值。
    • originalIndex:整數,指出原始要求中的對應值。要求中的每個值都應對應至回應中的對齊值。這些值會從 0 開始編列索引,因此 4originalIndex 值為 4 的點,會是傳遞至 path 參數的第 5 個經緯度值。
    • placeId:地點的專屬 ID。Roads API 傳回的所有地點 ID 都會對應至路段。placeId 可在速限要求中傳遞,以判斷該路段的速限。
  • warning_message:包含使用者可見警告的字串。

使用路徑的要求範例

這項要求會取得最接近指定路徑中每個經緯度配對的路段速限,該路徑會經過葡萄牙里斯本的瓦斯科達伽馬大橋。

要求

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,不必使用經緯度配對。建議您使用 snapToRoadsnearestRoads 要求,取得路段的 Place ID。傳遞地點 ID 時,API 會傳回每個地點 ID 所代表路段的速限。API 不會對提供的地點 ID 進行任何道路對齊作業。

以下範例會要求葡萄牙里斯本 Vasco da Gama 橋樑部分路段的速限。

要求

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 道路,橫跨 Rio Tejo。這座橋樑本身的 Place ID 為 ChIJUzt97ZEwGQ0RM1JzQfqoDtU。上述回應中的第一個路段屬於 E90 道路,地點 ID 為 ChIJX12duJAwGQ0Ra0d4Oi4jOGE。在範例要求中,如果將道路地點 ID 替換為橋梁地點 ID,則回應的 speedLimits 陣列中只會有兩個速限,因為橋梁地點 ID 並未參照個別路段。此外,如果地點 ID 皆非路段,回應就不會包含任何速限。

使用地點 ID 提出速限要求時,請確保每個地點 ID 都是指路段,而非其他類型的地點。如要取得個別路段的地點 ID,建議使用 snapToRoadsnearestRoads 要求,這兩種要求都能透過單一呼叫傳回多個地點 ID。