街景服務動態磚

街景服務範例街景服務圖塊與 2D 圖塊類似,差別在於前者包含透過街道拍攝的全景圖像。有了街景服務,你就能探索世界知名地標、欣賞自然奇觀,還能一窺博物館、運動場、餐廳或小型商家的內部實景。此 API 端點可讓您存取:

  • Google 地圖街景服務圖塊
  • 街景服務中繼資料
  • 街景服務縮圖

您可以拼接拍攝街景圖像的圖塊,以呈現真實全景。而且您可以查詢一組地點 (例如路線) 最多 100 個全景 ID,並取得與攝影機位置相關的深入中繼資料。

需要檢視者才能將街景服務圖塊拼接在一起。例如街景服務自訂全景檢視器。

取得 API 金鑰後,您可以按照下列步驟存取街景服務圖像。

  1. 取得工作階段符記。請務必將 mapType 的值設為 streetview

  2. 使用工作階段符記取得一或多個地理位置的全景 ID (panoId)

  3. 使用 panoId 搜尋回應中的全景 ID 可取得:

    1. 街景服務中繼資料:您也可以傳送一組座標和半徑,以取得街景服務中繼資料。

    2. 街景服務縮圖

    3. 街景服務圖塊

街景服務方法

您可以呼叫下列其中一種方法,存取街景服務圖像和中繼資料。

方法 說明
https://tile.googleapis.com/v1/streetview/tiles 傳回個別街景服務圖塊。您可以從 6 種縮放等級擷取「街景服務圖塊」:512 像素至 13,312 像素。
https://tile.googleapis.com/v1/streetview/panoIds 可讓您一次搜尋最多 100 個地點。傳回所有包含圖像之地點的全景 ID。
https://tile.googleapis.com/v1/streetview/thumbnail 傳回街景服務場景的 JPEG 縮圖。可讓您提供標題、提案、維度和視野。尺寸下限為 16x16 像素。尺寸上限為 250x600 像素。
https://tile.googleapis.com/v1/streetview/metadata 提供指定全景的詳細資訊。詳細資訊包括相關地址,以及相鄰的全景連結。

您可以將一或多個地理位置的座標 (latlng) 傳遞至 panoIds 方法,藉此找出一或多個地理位置的全景 ID。要求主體是包含 locations 陣列且選用 radius 的 JSON 物件,如以下 JSON 程式碼範例所示。

curl -X POST -d '{
  "locations": [
    {"lat": -33.883837, "lng": 151.209307},
    {"lat": -33.883700, "lng": 151.210307},
    {"lat": 0, "lng": 0}
  ],
  "radius": 50
}' \
-H 'Content-Type: application/json' \
"https://tile.googleapis.com/v1/streetview/panoIds?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY"
locations
locations 陣列必須包含至少一個座標值,但您可以加入更多座標值,上限為 100 個。
radius
radius 值 (以公尺為單位) 定義指定位置周圍的圓形半徑,以便在其中搜尋全景。預設值為 50 公尺。

PanoId 回應

Map Tiles API 會嘗試找出最靠近每個位置的全景,然後傳回全景 ID。如果 panoIds 要求成功,會傳回包含 panoIds 陣列的 JSON 物件。陣列包含一份全景 ID 清單,並依照您提出要求的順序顯示 ID。如果 Map Tiles API 找不到您要求地點的任何全景,系統就會在陣列中的該位置傳回空白字串。如需範例,請參閱下列 JSON 程式碼。

{
  "panoIds": [
    "ACfH-n2HcBvRry_3oc9grw",
    "f5DJZatBAAAXHlooS2wKbw",
    ""
  ]
}

您可以使用 panoIds 執行以下操作:

街景服務中繼資料

街景服務中繼資料要求擷取全景相關資訊。街景服務中繼資料要求是 HTTPS GET 要求。您可以透過以下兩種方式擷取全景相關資訊:

  • 如果傳遞 pano_id,Map Tiles API 就會傳回該全景的中繼資料。

  • 但如果您傳遞 latlng,則 Map Tiles API 會傳回指定搜尋半徑內最接近的全景的中繼資料。

傳遞一組座標和半徑

curl "https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&lat=lat&lng=lng&radius=meters"

由於全景 ID 是暫時性的,因此建議您在初始街景服務中繼資料要求中,傳遞一組座標和 radius 值。如需範例,請參閱下列程式碼片段。

curl "https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&lat=47.62066&lng=-122.34923&radius=50"

傳送街景服務圖片的 panoId

curl "https://tile.googleapis.com/v1/streetview/metadata?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=panoId"

中繼資料回應

下列 JSON 程式碼是一般中繼資料回應的範例。

{
 "panoId": "rZ9KeTyhA11i0VppYNzsSg",
 "lat": 37.420864219339165,
 "lng": -122.08446528377291,
 "imageHeight": 6656,
 "imageWidth": 13312,
 "tileHeight": 512,
 "tileWidth": 512,
 "heading": 94.35,
 "tilt": 88.39652,
 "roll": 1.7181772,
 "imageryType": "outdoor",
 "date": "2023-01",
 "copyright": "© 2023 Google",
 "reportProblemLink": "https://cbks0.googleapis.com/cbk?output=report&panoid=rZ9KeTyhA11i0VppYNzsSg&cb_client=api&cbp=1,0,,0,0&hl=en-US&gl=us",
 "addressComponents": [
  {
   "longName": "United States",
   "shortName": "United States",
   "types": [
    "country"
   ]
  },
  {
   "longName": "Mountain View, California",
   "shortName": "Mountain View, California",
   "types": [
    "locality"
   ]
  },
  {
   "longName": "Charleston Rd",
   "shortName": "Charleston Rd",
   "types": [
    "route"
   ]
  },
  {
   "longName": "1635",
   "shortName": "1635",
   "types": [
    "street_number"
   ]
  }
 ],
 "links": [
  {
   "panoId": "Yw4pqzA4FEq1qs-BwZSvSQ",
   "heading": 274.47998046875,
   "text": "Charleston Rd"
  },
  {
   "panoId": "1cODYwFRw1aZ45IignDIMw",
   "heading": 94.47999572753906,
   "text": "Charleston Rd"
  }
 ]
}

下列清單包含回應主體中的欄位定義。

panoId
這個全景的專屬 ID。全景 ID 的有效時間不應超過單一使用者工作階段。
latlng
全景的座標 (經緯度)。這些值可以與您在要求中傳遞的座標不同,因為位置「snaps」到最近的全景。
imageHeightimageWidth
拼接的全景圖片尺寸。
tileHeighttileWidth
單一全景圖塊的尺寸。
heading
指南針方向,以度為單位,從北順時針測量。會傳回 [0,360] 範圍內的標題,0 則代表以北方為圓心。
tilt
全景的傾斜度,以全景的南極度到地平線為度。傳回的值在 [0, 180] 範圍內。值為 90 度時,表示地平線已對齊全景的赤道。
roll
套用至全景的視線順時針旋轉,以水平調整地平線。傳回的值在 [0, 360] 範圍內。
imageryType
代表圖片類型。有效值為 indooroutdoor
date
圖片的拍攝日期。部分圖片沒有日期資料。但如果有的話,這個欄位會包含年份 (YYYY) 和月份 (MM) 的組合。例如 2023-05 或 2024。
copyright
必須連同街景服務圖片一併顯示的版權文字。
reportProblemLink
這個超連結可讓使用者回報這個街景服務圖塊的問題。您必須將此超連結顯示在圖片的右下角,且必須包含「回報這張圖片的問題」之類的連結文字。
addressComponent
結構化地理編碼,內含全景地址的詳細資料。詳情請參閱 Geocoding API 說明文件中的「地理編碼要求和回應」一文。
links
連結至這個項目的全景 ID 清單。同時包含連結所在的標題。舉例來說,如果標題為 180°,則連結的全景就在目前全景的南方。請注意,由於全景 ID 具有暫時性特性,因此,您不應將這些 ID 依賴於單一使用者工作階段。

街景服務縮圖

您可以要求使用 thumbnail 格式的街景服務圖像。縮圖是非圖塊的圖片,具有使用者定義大小、標題、音調和視野。縮圖圖片的解析度低於圖塊,且檔案大小較小。您可以將 GET 要求傳送至 thumbnail 端點,藉此提出縮圖要求,如以下程式碼原型所示。

curl "https://tile.googleapis.com/v1/streetview/thumbnail?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=panoId&height=FROM_16_TO_250&width=FROM_16_TO_600&pitch=FROM-90_TO_90&yaw=FROM-360_TO_360&fov=FROM_30_TO_120"

請參考以下程式碼範例,下載加拿大惠斯勒拍攝的街景服務圖像縮圖。

curl "https://tile.googleapis.com/v1/streetview/thumbnail?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=Zzl28rqGJgaL2IdkUleP8A&height=200&width=200&pitch=0&yaw=250&fov=80" --output /tmp/example_thumbnail.png

加拿大惠斯勒的街景服務縮圖

必要參數

panoId
你要的縮圖專屬 ID。您可以從 panoIds 端點metadata 端點取得全景 ID 值,這兩者都會接受地理座標,然後傳回適當的 panoId
session
有效的工作階段符記
key
您的 API 金鑰

自選參數

height
指定縮圖的高度 (以像素為單位),範圍介於 16 像素到 250 像素之間。如果未指定高度,則預設高度會預設為 250 像素的最大值。如果您指定的值超出範圍,系統會將縮圖snaps 改為最接近的有效值。
width
指定縮圖的寬度 (以像素為單位),範圍介於 16 像素到 600 像素之間。如果未指定寬度,則預設值為允許的最大值 600 像素。如果您指定的值超出範圍,系統會將縮圖snaps 設為最接近的有效值。
pitch
指定攝影機沿著垂直軸的角度。有效值介於 -9090 之間 (含首尾)。預設值為 0。
yaw
指定攝影機沿著水平軸的方向。有效值介於 -360360 之間 (含首尾)。預設值為 0。
fov
指定水平視野 (以度為單位),最大值為 120。處理固定大小的可視區域時 (就像與固定大小的街景服務圖片一樣),視野代表縮放;在較小的值會指定較高縮放等級。預設值為 90。

街景服務圖片圖塊

取得 panoId 後,您就可以要求街景服務圖片圖塊。資訊方塊要求為 HTTPS GET 要求。請看以下範例。

curl "https://tile.googleapis.com/v1/streetview/tiles/z/x/y?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&panoId=panoId"

在這個程式碼範例中,z 是縮放等級,而 xy 則是您想要的街景服務圖塊的圖塊座標。街景服務全景的縮放等級必須落在 [0,5] 範圍內,0 代表最寬的視野。

縮放級別 概略視野
0 360 度
1 180 度
2 90 度
3 7\u00B0
4 37°
5 11.25°

街景服務圖塊回應

成功的街景服務圖塊要求會傳回 createSession 回應中指定的格式和大小圖片。

資訊方塊要求成功的結果

縮放等級為 0 時,整個全景會由 tileHeight 調整為 tileWidth 尺寸圖塊。由於 x 維度較大型全景,因此方塊的 y 維度會包含空白空間:

縮放等級 0

縮放等級為五時,會使用原尺寸全景,並分割成圖塊。

每張街景服務全景都必須顯示版權資訊。要顯示的字串可能因全景而異。如要取得版權資訊,您必須要求街景服務中繼資料,然後參照回應的 copyright 欄位。詳情請參閱「資料歸因」一文。