Google 地理编码 API 为邮政编码返回 ZERO_RESULTS
Posted
技术标签:
【中文标题】Google 地理编码 API 为邮政编码返回 ZERO_RESULTS【英文标题】:Google geocoding API returns ZERO_RESULTS for postal code 【发布时间】:2018-10-17 20:36:58 【问题描述】:我正在尝试使用 Google 地图 API 对用户输入的数据进行地理编码,但澳大利亚邮政编码“2010”出现错误
maps.google.com/maps/api/geocode/json?components=country:AU|postal_code:2010
但是,如果我在 Google 地图中搜索,我会得到一个结果。我在请求中做错了吗?
【问题讨论】:
不,请求是正确的。例如,它适用于maps.googleapis.com/maps/api/geocode/…,但由于某些奇怪的原因,它会在 2010 年产生“ZERO_RESULTS” 我有同样的经历,对于 country:ch|postal_code:3001 - 例如,2575 总是有效的。 3001 也可以,偶尔!你在这个问题上的发现在哪里? 【参考方案1】:您的请求完全没问题,但很遗憾,Google 在搜索 4 位邮政编码时遇到了问题。此错误已在 Google 问题跟踪器中报告,您可以在此处查看:
4-digit postal codes are hard to geocode (AT, AU, BE, DK, NZ, SI)
我建议为该错误加注星标以添加您的投票并订阅来自 Google 的进一步通知。
您还可以看到 Google 建议的解决方法是使用类型为 (region)
和国家/地区组件过滤器的地点自动完成请求。
因此,在您的情况下,您可以运行以下查询
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=2010&types=(regions)&components=country%3AAU&key=YOUR_API_KEY
它将返回邮政编码 2010 的地点 ID:ChIJ3QyubXuuEmsREIe6P2t9ARw
您可以使用带有地点 ID 的地理编码来获取所需信息
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ3QyubXuuEmsREIe6P2t9ARw&key=YOUR_API_KEY
我希望这会有所帮助!
【讨论】:
【参考方案2】:在对美国邮政编码进行地理编码时,我会定期遇到类似问题。在邮政编码后附加国家名称似乎可以解决问题。所以,不要使用60162
,而是使用60162 USA
。
【讨论】:
值得注意的是,上面报告的错误是针对 4 位邮政编码的,因此美国代码不受此问题的影响。 我在某些邮政编码中遇到过这个问题,例如60006
,恰好也是伊利诺伊州,例如60162
。按照@levi 的建议,在60006 USA
后面加上“USA”就解决了这个问题。【参考方案3】:
当在浏览器中根据其 IP 上下文打开 URL 时,它会识别国家并自动推断邮政编码的查询格式为 99.999-99。
上述格式适用于巴西,但每个国家/地区(例如美国和葡萄牙)有不同的标准。
通过 CURL(通过代码或终端)调用 API 时的一种解决方案,包括“&components = country: US”参数,将“US”国家代码更改为您要过滤的内容.
为了安全起见,Google API 返回 ZERO_RESULTS,因为搜索速度太慢,并且可以在全球范围内进行全球搜索,而不仅仅是国家/地区。出于性能和速度的原因,Google 会创建此自动 ID 以寻求帮助,但遗憾的是并未向开发人员提供有关此过程的信息。
祝你好运!
【讨论】:
以上是关于Google 地理编码 API 为邮政编码返回 ZERO_RESULTS的主要内容,如果未能解决你的问题,请参考以下文章