高度要求和回應

海拔高度要求

Elevation API 要求是以網址字串的形式建構。API 會傳回地表位置的海拔高度資料。您可以透過下列兩種方式指定位置資料:

  • 一或多個 locations 的集合。
  • 沿著 path 的一連串相連點。

這兩種方法都會使用經緯度座標來識別位置或路徑頂點。本文說明 Elevation API 網址的必要格式和可用參數。

Elevation API 會傳回單點查詢的資料,並盡可能提供最高準確度。涉及多個位置的批次查詢可能會傳回準確度較低的資料,尤其是當位置分散時,因為資料會進行一些平滑處理。

Elevation API 要求的格式如下:

https://maps.googleapis.com/maps/api/elevation/outputFormat?parameters

其中 outputFormat 可以是下列任一值:

  • json (建議):表示輸出內容為 JavaScript 物件標記法 (JSON);或
  • xml:表示輸出內容為 XML,並包裝在 <ElevationResponse> 節點中。

注意:網址必須正確編碼才有效,且所有 Web 服務的網址長度上限為 16384 個字元。建構網址時,請留意這項限制。請注意,不同的瀏覽器、Proxy 和伺服器也可能有不同的網址字元限制。

使用 API 金鑰的要求必須透過 HTTPS 傳送。

要求參數

向 Elevation API 發出的要求會根據要求是針對不連續的位置或排序路徑,使用不同的參數。如果是離散位置,海拔高度要求會傳回要求中傳遞的特定位置資料;如果是路徑,海拔高度要求則會沿著指定路徑取樣。

依照所有網址的標準,參數會以 &amp; 字元分隔。以下列出參數和可能的值。

所有要求

  • key -- (必要) 應用程式的 API 金鑰。這組金鑰可識別您的應用程式,以便管理配額。瞭解如何取得金鑰。

位置要求

  • locations (必要):定義要傳回海拔高度資料的地表位置。這個參數可接受單一位置 (以半形逗號分隔的 {latitude,longitude} 組合,例如「40.714728,-73.998672」),或多組經緯度 (以陣列或編碼折線形式傳遞)。這個參數的上限為 512 點。詳情請參閱下方的「指定位置」一節。

路徑取樣要求

  • path (必要):定義要傳回海拔高度資料的地表路徑。這個參數會定義一組包含兩對或多對已排序 {latitude,longitude} 的組合,用來定義沿著地球表面的路徑。這項參數必須與下方所述的 samples 參數搭配使用。這項特定參數的上限為 512 點。詳情請參閱下方的「指定路徑」。
  • samples (必要):指定要傳回海拔高度資料的路徑沿途取樣點數量。samples 參數會將指定的 path 分割為路徑沿途中一組已排序的等距點。

指定位置

位置要求會透過 locations 參數表示,指出特定位置的海拔高度要求,並以經緯度值傳遞。

locations 參數可接受下列引數:

  • 單一座標:locations=40.714728,-73.998672
  • 以直立線 (「|」) 字元分隔的座標陣列: locations=40.714728,-73.998672|-34.397,150.644
  • 使用編碼折線演算法的一組編碼座標: locations=enc:gfo}EtohhU

經緯度座標字串是以半形逗號分隔的文字字串,其中包含數字。例如,「40.714728,-73.998672」是有效的 locations 值。經緯度值必須對應至地球表面的有效位置。緯度可介於 -90 至 90 之間,經度則可介於 -180 至 180 之間。如果指定的經緯度值無效,系統會拒絕要求,並視為無效要求。

您可以在陣列或編碼折線中傳遞最多 512 個座標,同時仍可建構有效的網址。請注意,傳遞多個座標時,任何傳回資料的解析度準確性,可能會比只要求單一座標資料時更低。如果「locations」或「path」參數中的點或座標超過 512 個,系統會傳回 INVALID_REQUEST 回應。

指定路徑

取樣路徑要求會透過 path 和 samples 參數表示,指出要求路徑沿途指定間隔的海拔高度資料。與使用 locations 參數的位置要求一樣,path 參數會指定一組經緯度值。然而與位置要求不同的是,path 會指定一組已排序的端點。路徑要求不會只傳回端點的海拔高度資料,而是會根據指定的 samples 數量,沿著路徑長度取樣 (包含端點)。

path 參數可採用下列任一引數:

  • 由兩個以上座標文字字串組成的陣列,以半形逗號分隔,並使用直立線 (「|」) 字元分隔: path=40.714728,-73.998672|-34.397,150.644
  • 使用編碼折線演算法編碼的座標: path=enc:gfo}EtohhUxD@bAxJmGF

經緯度座標字串是以半形逗號分隔的文字字串,其中包含數字。舉例來說,「40.714728,-73.998672|-34.397, 150.644」是有效的 path 值。經緯度值必須對應至地球上的有效位置。緯度值可介於 -90 至 90 之間,經度值則可介於 -180 至 180 之間。如果您指定的緯度或經度值無效,系統會拒絕要求,並視為無效要求。

您可以在陣列或編碼折線中傳遞最多 512 個座標,同時仍可建構有效的網址。請注意,傳遞多個座標時,任何傳回資料的解析度準確性,可能會比只要求單一座標資料時更低。如果「locations」或「path」參數中的點或座標超過 512 個,系統會傳回 INVALID_REQUEST 回應。

海拔高度回應

  • 由兩個以上座標文字字串組成的陣列,以半形逗號分隔,並使用直立線 (「|」) 字元分隔: path=40.714728,-73.998672|-34.397,150.644
  • 使用編碼折線演算法編碼的座標: path=enc:gfo}EtohhUxD@bAxJmGF

經緯度座標字串是以半形逗號分隔的文字字串,其中包含數字。舉例來說,「40.714728,-73.998672|-34.397, 150.644」是有效的 path 值。經緯度值必須對應至地球上的有效位置。緯度值可介於 -90 至 90 之間,經度值則可介於 -180 至 -180 之間。如果您指定的緯度或經度值無效,系統會拒絕要求,並視為無效要求。

您可以在陣列或編碼折線中傳遞最多 512 個座標,同時仍可建構有效的網址。請注意,傳遞多個座標時,任何傳回資料的解析度準確性,可能會比只要求單一座標資料時更低。如果「locations」或「path」參數中的點或座標超過 512 個,系統會傳回 INVALID_REQUEST 回應。

海拔高度回應

對於每個有效要求,海拔高度服務都會傳回海拔高度回應,格式則依要求網址中指定的格式而定。

ElevationResponse

欄位 必填 類型 說明
required Array<ElevationResult> 詳情請參閱 ElevationResult。
required ElevationStatus 詳情請參閱 ElevationStatus。
選填 字串

如果服務傳回 OK 以外的狀態碼,回應物件中可能會有額外的 error_message 欄位。這個欄位包含更詳細的資訊,說明指定狀態碼背後的原因。這個欄位不一定會傳回,且內容可能會有變動。

ElevationStatus

服務傳回的狀態碼。

  • OK:表示已成功完成 API 要求。
  • DATA_NOT_AVAILABLE,表示您輸入的地點沒有可用的資料。
  • INVALID_REQUEST:表示 API 要求的格式有誤。
  • OVER_DAILY_LIMIT,表示下列任一情況:
    • API 金鑰遺失或無效。
    • 您的帳戶未啟用計費功能。
    • 超過自行設定的用量上限。
    • 您提供的付款方式已失效 (例如信用卡已過期)。
  • OVER_QUERY_LIMIT:表示要求者已超出配額。
  • REQUEST_DENIED:表示 API 未完成要求。
  • UNKNOWN_ERROR:表示發生未知錯誤。

如果狀態碼不是 OK,Elevation 回應物件中可能會有額外的 error_message 欄位。這個欄位包含更詳細的資訊,說明指定狀態碼背後的原因。

回應包含 results 陣列,其中有下列元素:

ElevationResult

欄位 必填 類型 說明
required 數字

位置的海拔高度 (以公尺為單位)。

required LatLngLiteral

位置的位置元素,此位置用於計算海拔高度資料。請注意,在路徑要求中,位置元素的組合會包含路徑沿途的取樣點。

詳情請參閱 LatLngLiteral。

選填 數字

這個值表示插入海拔高度的資料點之間的最遠距離 (以公尺為單位)。如果解析度不明,就不會顯示這個屬性。請注意,傳遞多個點時,海拔高度資料會變得較不精確 (解析度值較大)。如要取得某一點最準確的海拔高度值,請單獨進行查詢。

LatLngLiteral

描述特定位置的物件,經緯度以十進位度數表示。

欄位 必填 類型 說明
required 數字

緯度 (十進制度數)

required 數字

經度 (十進制度)

位置海拔高度範例

以下範例要求科羅拉多州丹佛市 (又稱「一英里高城」) 的海拔高度:

網址

https://maps.googleapis.com/maps/api/elevation/json
    ?locations=39.7391536%2C-104.9847034
    &key=YOUR_API_KEY
      

cURL

curl -L -X GET 'https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536%2C-104.9847034&key=YOUR_API_KEY'
      

JSON

        
{
  "results":
    [
      {
        "elevation": 1608.637939453125,
        "location": { "lat": 39.7391536, "lng": -104.9847034 },
        "resolution": 4.771975994110107,
      },
    ],
  "status": "OK",
}
        
        

XML

        
<ElevationResponse>
 <status>OK</status>
 <result>
  <location>
   <lat>39.7391536</lat>
   <lng>-104.9847034</lng>
  </location>
  <elevation>1608.6379395</elevation>
  <resolution>4.7719760</resolution>
 </result>
</ElevationResponse>
        
        

以下範例顯示多個回應 (科羅拉多州丹佛和加州死谷)。

這項要求示範如何使用 JSON output 旗標:

網址

https://maps.googleapis.com/maps/api/elevation/json
    ?locations=39.7391536%2C-104.9847034%7C36.455556%2C-116.866667
    &key=YOUR_API_KEY
      

cURL

curl -L -X GET 'https://maps.googleapis.com/maps/api/elevation/json?locations=39.7391536%2C-104.9847034%7C36.455556%2C-116.866667&key=YOUR_API_KEY'
      

這項要求示範如何使用 XML output 旗標:

https://maps.googleapis.com/maps/api/elevation/xml?locations=39.7391536,-104.9847034|36.455556,-116.866667&key=YOUR_API_KEY

選取下方分頁標籤,即可查看 JSON 和 XML 回應範例。

JSON

      
{
  "results":
    [
      {
        "elevation": 1608.637939453125,
        "location": { "lat": 39.7391536, "lng": -104.9847034 },
        "resolution": 4.771975994110107,
      },
      {
        "elevation": -52.79492568969727,
        "location": { "lat": 36.455556, "lng": -116.866667 },
        "resolution": 19.08790397644043,
      },
    ],
  "status": "OK",
}
      
      

XML

      
<ElevationResponse>
 <status>OK</status>
 <result>
  <location>
   <lat>39.7391536</lat>
   <lng>-104.9847034</lng>
  </location>
  <elevation>1608.6379395</elevation>
  <resolution>4.7719760</resolution>
 </result>
 <result>
  <location>
   <lat>36.4555560</lat>
   <lng>-116.8666670</lng>
  </location>
  <elevation>-52.7949257</elevation>
  <resolution>19.0879040</resolution>
 </result>
</ElevationResponse>
      
      

下列範例要求沿著直線 path 取得海拔高度資料,範圍從加州惠特尼山到加州惡水盆地,也就是美國本土的最高點和最低點。我們要求三個 samples,因此會包含兩個端點和中間點。

網址

https://maps.googleapis.com/maps/api/elevation/json
  ?path=36.578581%2C-118.291994%7C36.23998%2C-116.83171
  &samples=3
  &key=YOUR_API_KEY
    

cURL

curl -L -X GET 'https://maps.googleapis.com/maps/api/elevation/json?path=36.578581%2C-118.291994%7C36.23998%2C-116.83171&samples=3&key=YOUR_API_KEY'
    

JSON

      
{
  "results":
    [
      {
        "elevation": 4411.94189453125,
        "location": { "lat": 36.578581, "lng": -118.291994 },
        "resolution": 19.08790397644043,
      },
      {
        "elevation": 1372.8359375,
        "location": { "lat": 36.41150289067028, "lng": -117.5602607523847 },
        "resolution": 9.543951988220215,
      },
      {
        "elevation": -84.51690673828125,
        "location": { "lat": 36.23998, "lng": -116.83171 },
        "resolution": 9.543951988220215,
      },
    ],
  "status": "OK",
}
      
      

XML

      
<ElevationResponse>
 <status>OK</status>
 <result>
  <location>
   <lat>36.5785810</lat>
   <lng>-118.2919940</lng>
  </location>
  <elevation>4411.9418945</elevation>
  <resolution>19.0879040</resolution>
 </result>
 <result>
  <location>
   <lat>36.4115029</lat>
   <lng>-117.5602608</lng>
  </location>
  <elevation>1372.8359375</elevation>
  <resolution>9.5439520</resolution>
 </result>
 <result>
  <location>
   <lat>36.2399800</lat>
   <lng>-116.8317100</lng>
  </location>
  <elevation>-84.5169067</elevation>
  <resolution>9.5439520</resolution>
 </result>
</ElevationResponse>