我正在尝试使用Google maps API对用户输入的数据进行地理编码,并因澳大利亚邮政编码“2010”而出现错误
maps.google.com/maps/api/geocode/json?components=country:AU|postal_code:2010
但是,如果我在谷歌地图中搜索,我会得到一个结果。我在请求中做错了吗?
答案 0 :(得分:3)
您的请求完全可以,但是很遗憾,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
我希望这会有所帮助!
答案 1 :(得分:1)
在对美国邮政编码进行地理编码时,我经常遇到类似的问题。在邮政编码后加上国家/地区名称似乎可以解决此问题。因此,请使用60162
而不是60162 USA
。
答案 2 :(得分:0)
根据其IP上下文在浏览器中打开URL时,它会识别国家/地区并自动推断出邮政编码的查询格式为99.999-99。
以上格式适用于巴西,但每个国家(例如美国和葡萄牙)都有不同的标准。
一种通过CURL通过代码或终端调用API的解决方案,包括“ &components = country:US ”参数,将“ US”国家/地区代码更改为您要过滤的内容
出于安全考虑,Google API会返回ZERO_RESULTS,因为搜索速度太慢,并且可能会在全球范围内(不仅限于国家/地区)进行全局搜索。出于性能和速度方面的考虑,Google创建了此自动ID来寻求帮助,但是很遗憾,该过程并未提供给开发人员。
祝你好运!