Google Maps地理编码API组件限制

时间:2017-02-16 15:41:12

标签: google-maps google-maps-api-3

我正在使用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参数,但这并不像我希望的那样紧。

1 个答案:

答案 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