【问题标题】:Google geocoding API returns ZERO_RESULTS for postal codeGoogle 地理编码 API 为邮政编码返回 ZERO_RESULTS
【发布时间】: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 也可以,偶尔!你在这个问题上的发现在哪里?

标签: google-maps google-geocoding-api


【解决方案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 以寻求帮助,但遗憾的是并未向开发人员提供有关此过程的信息。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 2011-05-19
      相关资源
      最近更新 更多