如何不指定半径查询城市内全部餐厅 解决Google Maps API报错
报错根因
你调用places_nearby接口返回ApiError: INVALID_REQUEST是因为该接口强制要求传入radius(搜索半径)参数,取值范围1~50000米,你当前的请求缺少这个必填参数,所以请求不合法。
多城市无固定半径的实现方案
不要使用Nearby Search接口,改用Places API的Text Search接口,不需要手动指定搜索半径,直接以「城市名 + 目标品类」作为搜索关键词,接口会自动匹配对应城市行政范围内的目标地点,无需适配不同城市的半径参数。
修正后的代码示例
gmaps = googlemaps.Client(key = API_KEY) # 搜索昌迪加尔境内的全部餐厅,接口自动匹配城市范围,无需指定经纬度、半径 places_result = gmaps.places(query="昌迪加尔 餐厅", open_now =False , type = 'restaurant')
如果需要避免同名城市的搜索误差,可以先通过Geocoding接口获取目标城市的唯一place_id,搜索时带入place_id限定范围即可。
注意事项
- 单次Text Search接口最多返回60个结果,分为3页返回,需要通过返回结果中的
next_page_token拉取全量数据,两次分页请求的间隔需要大于2秒,否则会触发请求失败。 - 谷歌Places API默认不会返回某个城市的全量餐厅数据,仅返回该区域符合条件的前60个结果,如果你需要更全的数据,可以先获取城市的行政边界,拆分多个小区域分别调用接口后聚合结果。
内容的提问来源于stack exchange,提问作者DSR
相关产品推荐
相关产品推荐

