Google 地理代码 API 未过滤卢森堡的结果

Google geo code API not filtering results for Luxembourg

我正在过滤国家代码 LU 的结果。仍在获取美国的结果

https://maps.googleapis.com/maps/api/geocode/json?address=4321%2CLU&components=country%3ALU

我是不是做错了什么?

文档说明您不能在地址和组件过滤器中同时使用国家/地区。这样做你会得到不可预测的行为。

https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering

Note: Each address component can only be specified either in the address parameter or as a component filter, but not both. Doing so may result in ZERO_RESULTS.

所以,您的查询应该是

https://maps.googleapis.com/maps/api/geocode/json?address=4321&components=country%3ALU&key=YOUR_API_KEY

不确定 4321 是什么意思。如果这是邮政编码,我认为 Google 数据库中缺少它,因为

https://maps.googleapis.com/maps/api/geocode/json?components=postal_code%3A4321%7Ccountry%3ALU&key=YOUR_API_KEY

returns ZERO_RESULTS.

不,你没有犯什么大错;您的 API 呼叫应该可以正常工作。我相信这是 Google 的 API 中的错误,但现在似乎已修复。 (当我转到 the url you asked about 时,我得到了一个正确的 JSON 响应,其中没有提到美国。)(如果您报告了错误,也许您应该得到修复它的功劳!:)

最初出现问题的原因是 Google 不是地址验证或标准化服务。解析困难的原因有很多:例如,可能存在奇怪的拼写或标点符号。 Google 非常擅长解析搜索词。

但是,还有一个问题:我们如何知道哪些部分与城市或州匹配? "Georgia" 是美国的一个州和一个国家。 “12 34 St Helena WA 85102”是否应该匹配“34 street”或名为 "St Helena" 的道路?

地址验证是指根据权威数据库(例如邮局数据和国家记录)检查地址,从而与真实地点相匹配。地址标准化意味着按照邮政服务标准化的方式格式化地址。

因此,您将来很可能 运行 遇到更多类似的问题,尤其是当您使用的地址不明确时。您可能想尝试地址验证服务,尤其是当您从事邮寄和运输工作时。

公平披露:我是地址验证公司 SmartyStreets 的员工。