【问题标题】:Google Maps geocoding API component restriction谷歌地图地理编码 API 组件限制
【发布时间】:2017-02-17 19:48:15
【问题描述】:

我正在使用Google Maps Geocoding API web service,并且我正在使用components 参数将结果限制为“伦敦”。我的 URL 查询在这里:

https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=administrative_area:london, united kingdom

这非常好用,我只能得到伦敦范围内的结果。但是,如果我要求的东西绝对不在伦敦(例如“曼彻斯特”),我只会得到与“大伦敦”相关的默认回报。我宁愿它简单地返回ZERO_RESULTS 状态。有没有办法指定这个?

P.S 我曾尝试使用 region 参数,但这并没有我想要的那么紧。

【问题讨论】:

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


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多