You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python的google-streetview API实现街景前后移动?

实现谷歌街景坐标切换(模拟箭头移动)的Python方案

Google Street View官方API本身没有直接提供“模拟箭头移动”的函数,但可以通过**街景全景元数据(Metadata API)**实现类似功能,核心思路是利用每个全景图(Pano)的相邻全景数据来切换坐标。

核心逻辑

每个街景全景都有唯一的pano_id,通过Metadata API可以获取该全景的相邻全景列表(包含方向、距离等信息),筛选对应方向的相邻pano后,再获取其经纬度坐标,就能模拟箭头移动的效果。

具体步骤

  • 第一步:通过初始经纬度获取对应的pano_id
  • 第二步:调用Metadata API,传入pano_id获取相邻全景数据
  • 第三步:根据需要的移动方向(如前、后)筛选目标相邻pano,提取其经纬度

代码示例

import requests

API_KEY = "你的Google Maps API密钥"

def get_pano_id(lat, lng):
    """通过经纬度获取对应的pano_id"""
    url = f"https://maps.googleapis.com/maps/api/streetview/metadata?location={lat},{lng}&key={API_KEY}"
    response = requests.get(url).json()
    return response.get("pano_id")

def get_adjacent_panos(pano_id):
    """获取指定pano的相邻全景数据"""
    url = f"https://maps.googleapis.com/maps/api/streetview/metadata?pano={pano_id}&key={API_KEY}"
    response = requests.get(url).json()
    return response.get("links", [])

def move_to_direction(pano_id, target_direction):
    """根据目标方向(如'forward')获取移动后的坐标"""
    adjacent_panos = get_adjacent_panos(pano_id)
    # 遍历相邻全景,匹配目标方向(方向值为'left'/'right'/'forward'/'backward')
    for link in adjacent_panos:
        if link.get("direction") == target_direction:
            # 获取目标pano的坐标
            target_pano_id = link.get("pano")
            # 再次调用Metadata API获取该pano的坐标
            pano_metadata = requests.get(f"https://maps.googleapis.com/maps/api/streetview/metadata?pano={target_pano_id}&key={API_KEY}").json()
            return pano_metadata.get("location", {}).get("lat"), pano_metadata.get("location", {}).get("lng")
    return None, None

# 示例使用
if __name__ == "__main__":
    # 初始坐标(比如纽约时代广场附近)
    start_lat, start_lng = 40.7580, -73.9855
    # 获取初始pano_id
    start_pano = get_pano_id(start_lat, start_lng)
    if start_pano:
        # 模拟向前移动,获取新坐标
        new_lat, new_lng = move_to_direction(start_pano, "forward")
        print(f"移动后的坐标:{new_lat}, {new_lng}")

注意事项

  • 确保你的Google Cloud账号已启用Street View Static API,并拥有有效的API密钥
  • 每次API调用都会消耗配额,注意Google的请求限制
  • 相邻全景的direction字段可能存在偏差,若需要更精确的方向匹配,可以结合heading值进行计算调整

内容的提问来源于stack exchange,提问作者Stack Overflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:42:38