速限

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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 建立索引,因此 originalIndex4 的點將是傳遞至 path 參數的第 5 個緯度/經度的貼齊值。
    • placeId:地點的專屬 ID。Roads API 傳回的所有地點 ID 都會對應至道路區隔。placeId 可在速度限制要求中傳遞,以決定該路段的速限。
  • warning_message:包含使用者可見警告的字串。

使用路徑的要求範例

這個要求會取得在葡萄牙里斯本通過 Vasco da Gama Bridge 的路徑中,最接近指定緯度/經度的每個路段的速限。

要求

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 要求取得路段的 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 橋。橋接器本身俱有地點 ID 為 ChIJUzt97ZEwGQ0RM1JzQfqoDtU。上述回應中的第一個道路部分是 E90 道路的一部分,地點 ID 為 ChIJX12duJAwGQ0Ra0d4Oi4jOGE。在這個要求要求中,如果您將道路地點 ID 改為橋接地點 ID,那麼在回應中,speedLimits 陣列只會有兩個速度限制,因為橋樑的地點 ID 不參照個別道路區隔。此外,如果沒有任何地點 ID 用於道路區隔,則回應不會包含任何速限。

使用地點 ID 提出速限要求時,請確認每個地點 ID 代表道路區隔,而非不同類型的地點。使用 snapToRoadsnearestRoads 要求來擷取個別道路區隔的地點 ID,兩者都能從單一呼叫傳回多個地點 ID。