谷歌地理编码API返回邮政编码的ZERO_RESULTS

7
我正在尝试使用谷歌地图API对用户输入的数据进行地理编码,在澳大利亚邮政编码“2010”处出现错误。
maps.google.com/maps/api/geocode/json?components=country:AU|postal_code:2010
但是,如果我在谷歌地图中搜索,就能得到结果。我的请求是否有错?

不,请求是正确的。例如,它可以使用https://maps.googleapis.com/maps/api/geocode/json?components=country:AU|postal_code:4000工作,但由于某种奇怪的原因,它会为2010产生“ZERO_RESULTS”。 - Anatolii Suhanov
我有相同的经验,对于国家:ch|postal_code:3001 - 例如,2575总是可以工作的。3001也能工作,但很偶尔会出现问题!你在这个问题上有什么发现吗? - benzkji
3个回答

7

您的请求完全没有问题,但不幸的是,Google在搜索四位邮政编码时出现了问题。这个bug已经在Google问题跟踪器中报告,并且您可以在此处查看:

难以对4位数邮政编码进行地理编码(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

希望这有所帮助!


4

我偶尔也会遇到类似的问题,当对美国邮编进行地理编码时。在邮编后面添加国家名称似乎可以解决这个问题。因此,不要使用60162,而是使用60162 USA


值得注意的是,上面报告的错误针对的是4位邮政编码,因此美国的邮编不受此问题影响。 - Christian
3
我曾经遇到过某些邮政编码的问题,例如60006,这也是像60162一样的伊利诺伊州。根据@levi的建议,添加“USA”后缀,如60006 USA,解决了这个问题。 - Andrew E
谢谢!DC邮编(20414)不起作用,但添加“USA”可以得到结果。 - danbrellis

0

当基于其IP上下文在浏览器中打开URL时,它会识别国家并自动推断邮政编码的查询格式为99.999-99。

上述格式适用于巴西,但每个国家都有不同的标准,例如美国和葡萄牙。

通过CURL调用API的一个解决方案,无论是通过代码还是终端,都包括“&components=country:US” 参数,将“US”国家代码更改为您想要筛选的内容。

Google API出于安全考虑返回ZERO_RESULTS,因为搜索速度太慢,可能会进行全球范围的搜索而不仅仅针对该国家。出于性能和速度方面的原因,Google为帮助创建了这个自动ID,但不幸的是开发人员无法获取有关此过程的信息。

祝你好运!

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接