如何配置Google Places API以返回官方文档表1中的types类型?
解决Google Places API返回表1地点类型的问题
咱们先揪出核心问题:你现在拿到的types是point_of_interest、establishment这类通用类型(对应官方文档的表2),本质是因为API把你的搜索请求匹配到了Ditchburn Place这条街道,而不是你真正要找的Cambridge City Council市政厅实体。要拿到表1里的具体类型(比如local_government_office、city_hall这类),得先让API精准识别到目标地点。
步骤1:修正搜索Query,避免歧义
你的原始query里加了街道名,导致API优先匹配街道而非市政厅。把query改成更聚焦的内容:
query = "Cambridge City Council" query = query.replace(" ", "%20")
步骤2:用修正后的请求获取正确的类型
你的现有代码字段配置是对的,只需要替换query后重新请求。完整测试代码如下:
import requests import json searchBase = "https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=" detailsBase = "https://maps.googleapis.com/maps/api/place/details/json?place_id=" query = "Cambridge City Council" query = query.replace(" ", "%20") inp = "&inputtype=textquery" fields = "&fields=formatted_address,name,place_id,type" detailsFields = "&fields=place_id,name,permanently_closed,type,url" api_key = "YOUR_API_KEY" # 替换成你的API密钥 api = f"&key={api_key}" # 1. 搜索获取正确的Place ID r = requests.get(searchBase+query+inp+fields+api) search_result = json.loads(r.text) # 2. 用正确的Place ID拉取详细信息 if search_result['status'] == 'OK' and len(search_result['candidates']) > 0: place_id = search_result['candidates'][0]['place_id'] detail = requests.get(detailsBase+place_id+detailsFields+api) detail_result = json.loads(detail.text) print("返回的具体类型:", detail_result['result']['types'])
预期效果
当API精准匹配到Cambridge City Council后,返回的types会包含表1里的具体类型,类似这样:
['local_government_office', 'city_hall', 'point_of_interest', 'establishment']
额外提示
如果还是拿不到表1类型,大概率是目标地点在Google Places数据库里没有被标记为对应具体类型。这种情况你可以通过Google地图的「编辑地点」功能提交修正,但这属于数据层面的问题,代码无法直接解决。
内容的提问来源于stack exchange,提问作者chrc
相关产品推荐
相关产品推荐

