如何绕过Google Place API字段错误,保障有效字段正常返回?
处理Google Place API中部分地点不支持特定字段的请求错误
问题场景
当使用Google Place API的findplacefromtext接口请求部分地点不支持的字段(比如CN Tower的price_level)时,会直接返回INVALID_REQUEST错误,且无有效数据返回:
请求示例:
https://maps.googleapis.com/maps/api/place/findplacefromtext/json? input=CN%20tower &inputtype=textquery &fields=price_level &key=KEY
错误返回:
{ "candidates": [], "error_message": "Error while parsing 'fields' parameter: Unsupported field name 'price_level'. ", "status": "INVALID_REQUEST" }
解决方案
采用两步请求策略,避免因单个不支持字段导致整个请求失败:
- 第一步:获取地点基础信息与place_id
使用findplacefromtext接口请求所有地点普遍支持的基础字段(如name,place_id),这类请求不会触发错误:
https://maps.googleapis.com/maps/api/place/findplacefromtext/json? input=CN%20tower &inputtype=textquery &fields=name,place_id &key=KEY
- 第二步:通过Place Details API获取目标字段
用第一步得到的place_id调用Place Details API,请求包含price_level在内的所需字段。该API对于地点不支持的字段会直接忽略(不返回该字段),而非触发错误,其他支持的字段会正常输出:
https://maps.googleapis.com/maps/api/place/details/json? place_id=PLACE_ID_FROM_STEP1 &fields=name,price_level,formatted_address &key=KEY
额外说明
- 如果不想分两次请求,也可以在
findplacefromtext中仅请求确定所有目标地点都支持的字段,后续再针对可选字段单独用Place Details API补充查询。 - Place Details API的字段兼容性比
findplacefromtext更好,对于不存在的字段不会抛出错误,仅返回已存在的字段数据。
内容的提问来源于stack exchange,提问作者Kevin Tommy
相关产品推荐
相关产品推荐

