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

使用Python/Google Maps API进行逆地理编码:如何解析响应

解决Google Maps反向地理编码提取州的问题

嘿,我帮你搞定这个从经纬度提取州的问题!你已经成功调用API拿到响应了,接下来就是从返回的结构化数据里精准定位到州信息就行,我给你一步步拆解。

首先,先把你的代码补全,完整的反向地理编码调用应该是这样的:

from pymongo import MongoClient
import googlemaps

client = MongoClient()
turnkey = "MYVERYSECRETAPICODEWOOOOOOOOO"
gmaps = googlemaps.Client(key=turnkey)
lat = 29
long = -98.4936

# 补全反向地理编码调用
reverse_geo_result = gmaps.reverse_geocode((lat, long))

解析响应提取州信息

Google Maps的反向地理编码返回的是一个列表,每个列表项是一个地址结果。每个结果里的address_components字段是关键——它把地址拆成了不同层级的片段(比如国家、州、城市、街道等)。

对于美国的地址,州对应的类型是administrative_area_level_1,我们只需要遍历address_components,找到包含这个类型的条目,然后提取它的名称即可(long_name是全称比如Texas,short_name是缩写比如TX)。

下面是完整的解析代码,还加了错误处理避免找不到对应字段的情况:

def get_state_from_coords(lat, lng, gmaps_client):
    reverse_geo_result = gmaps_client.reverse_geocode((lat, lng))
    
    # 先检查有没有返回结果
    if not reverse_geo_result:
        return None
    
    # 遍历第一个结果的地址组件(第一个结果通常是最精确的)
    for component in reverse_geo_result[0]['address_components']:
        # 检查当前组件的类型是否包含州级行政区
        if 'administrative_area_level_1' in component['types']:
            # 返回全称或者缩写,按需选择
            return component['long_name']  # 比如 "Texas"
            # return component['short_name']  # 比如 "TX"
    
    # 如果没找到州信息,返回None
    return None

# 调用函数测试
state = get_state_from_coords(lat, long, gmaps)
print(f"对应的州是: {state}")

为什么这么做?

  • 第一个结果reverse_geo_result[0]是API返回的最精确匹配的地址,优先用它就够了。
  • address_components里的types字段标记了这个片段的地址层级,administrative_area_level_1是国际通用的州/省一级行政区的标记,在其他国家也适用(比如中国的省)。
  • 加了空结果和找不到字段的判断,避免脚本因为API返回异常而崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:04:16