街景图块

街景示例街景图块与 2D 图块类似,不同之处在于前者包含在街道级别拍摄的全景图像。通过街景,您可以探索世界各地的标志性建筑,欣赏自然奇观,并身临其境地参观博物馆、竞技场、餐馆或小型企业等地点。 通过此 API 端点,您可以访问:

  • Google 地图街景图块
  • 街景元数据
  • 街景缩略图

您可以将从街道级别拍摄的图像图块拼接在一起,打造出逼真的全景效果。您最多可以查询一组位置(例如路线)的 100 个全景图片 ID,并获取有关镜头位置更深入的元数据。

需要有查看者才能将街景图块拼接在一起。例如,街景自定义全景图片查看器。

拥有 API 密钥后,您可以通过执行以下步骤来访问街景图像。

  1. 获取会话令牌。请务必将 mapType 的值设置为 streetview

  2. 使用会话令牌获取一个或多个地理位置的全景图片标识符 (panoId)

  3. 使用 panoId 搜索响应中的全景图片标识符获取以下内容:

    1. 街景元数据。您还可以通过传递一组坐标和半径来获取街景元数据。

    2. 街景缩略图

    3. 街景图块

街景方法

您可以通过以下四种方法之一访问街景图像和元数据。

方法 说明
https://tile.googleapis.com/v1/streetview/tiles 返回单个街景图块。您可以通过六个缩放级别检索街景图块: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 方法来找到一个或多个地理位置的全景图片标识符。请求正文是一个 JSON 对象,其中包含 locations 数组和可选的 radius,如以下 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 是瞬时 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
全景图片的坐标(纬度和经度)。这些值可能与您在请求中传递的坐标不同,因为位置会贴靠到最近的全景图片。
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 具有瞬时特性,因此您不应仅将其用于单个用户会话。

街景缩略图

您可以请求 thumbnail 格式的街景图像。缩略图是非平铺图像,具有用户定义的大小、方向角、倾斜度和视野范围。缩略图图像的分辨率低于图块,并且文件大小较小。您可以通过向 thumbnail 端点发送 GET 请求来发出缩略图请求,如以下代码原型所示。

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 像素。如果您指定的值超出范围,则缩略图会贴靠最接近的有效值。
width
指定缩略图的宽度(以像素为单位),范围为 16 像素到 600 像素。如果您未指定宽度,则宽度默认为允许的最大值(600 像素)。如果您指定的值超出范围,则缩略图会贴靠到最接近的有效值。
pitch
指定镜头沿纵轴的角度。有效值范围为 -9090(含)。默认值为 0。
yaw
指定镜头沿水平轴的方向。有效值范围为 -360360(含)。默认值为 s 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 45°
4 22.5°
5 11.25°

街景图块响应

成功的街景图块请求会返回您在 createSession 响应中指定的格式和大小的图像。

成功的图块请求的结果

缩放级别为零时,整个全景图片将调整为尺寸为 tileWidth x tileHeight 的图块。由于全景图片的 x 维度较大,因此图块将在 y 维度中包含空白:

缩放级别 0

缩放级别为 5 时,将使用完整尺寸的全景图片,并将其分成多个图块。

您必须在每幅街景全景图片中显示版权信息。要显示的字符串可能因全景图片而异。如需获取版权信息,您必须请求街景元数据,然后可以引用响应的 copyright 字段。如需了解详情,请参阅数据归因