我正在使用Google Maps Geocoding API web service,而我正在使用components
参数将结果限制为“伦敦”。我的网址查询在这里:
https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=administrative_area:london, united kingdom
这种方法效果非常好,我只能得到伦敦境内的结果。但是,如果我要求一些绝对不在伦敦的东西(例如'曼彻斯特'),我只会获得与“大伦敦”相关的默认回报。我宁愿它只返回ZERO_RESULTS
状态。有没有办法指定这个?
P.S我试图使用region
参数,但这并不像我希望的那样紧。
答案 0 :(得分:0)
使用https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering
上的信息您可以按城市(地区)和国家/地区过滤为两个单独的过滤器组件,这些组件可以通过竖线(|)符号分隔。该国家/地区是ISO 3166-1国家/地区代码[https://en.wikipedia.org/wiki/ISO_3166-1]因此GB
以覆盖伦敦市。
因此,可以使用以下格式:
https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=locality:London|country:UK
考虑到这一点,并解决你的确切问题,根据 https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering
过滤器值支持相同的拼写校正方法和 与其他地理编码请求部分匹配。如果是地理编码结果 对于组件过滤器的部分匹配,它将包含partial_match 响应中的字段。
因此,当没有完全匹配时,似乎总会尝试找到部分匹配,但不幸的是,这不能被禁用。
但是,如果您对结果集中的"partial_match" : true
进行检查,则可以在代码中过滤掉处理响应的结果。
摘要
如果地址为“良好”
,此格式似乎不会生成"partial_match" : true
的结果
https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=locality:London|country:UK
它可以让您在代码中过滤"partial_match" : true
的响应,以排除虚假结果。例如,使用地址'曼彻斯特':
https://maps.googleapis.com/maps/api/geocode/json?address=Manchester&components=locality:London|country:UK