Google Places API州搜索返回重复结果问题求助
解决Google Places API自动补全重复结果的方法
用API参数提前过滤类型
调用Autocomplete API时,通过types参数限定返回结果的行政层级。比如要优先获取州级区域,就加&types=(administrative_area_level_1),这样搜索"Maine"时只会返回州级的结果,不会带出同名城市。如果需要同时支持城市搜索,可以根据用户输入场景动态切换types,或者用更宽泛的geocode类型,后续再处理结果。解析结果的types字段去重
如果不能提前限定types(要兼容多级别搜索),拿到响应后解析每个结果的types数组:- 对同名结果,保留包含
administrative_area_level_1(州)的条目,剔除属于administrative_area_level_2(城市/次级地区)的条目 - 按行政层级优先级排序(州>地区>城市),相同名称只留最高层级的结果
- 对同名结果,保留包含
通过address_components验证层级
每个Place结果的address_components里有详细的层级标记:- 州级结果的address_components中,会有
types包含administrative_area_level_1的项,short_name是州缩写(比如ME) - 同名城市的结果里,会有
types包含administrative_area_level_2的项,且父级是对应州
遍历这个字段就能精准判断结果层级,然后对同名结果做去重处理
- 州级结果的address_components中,会有
自定义去重逻辑兜底
如果以上方法还不够,就在前端或后端做自定义处理:- 提取结果的核心名称(比如把"Maine, USA"和"Maine, ME, USA"的核心名都提取为"Maine")
- 对相同核心名的结果,按层级优先级保留最高级的,或者默认隐藏重复的次级结果,给用户更简洁的选项
内容的提问来源于stack exchange,提问作者Subham Rajput
相关产品推荐
相关产品推荐

