从谷歌地理编码API获取最准确结果的正确地址格式

26
6个回答

34

我认为建议的格式是:

House Number, Street Direction, Street Name, Street Suffix, City, State, Zip, Country

很明显,你提供的信息越少,结果就越不具体。

在你的示例中,地理编码器正在搜索名为“ bloom”的街道,而在OH州有类似的匹配项,而不是在CT州。从查询中删除“ bloom”,然后进行搜索会返回CT州的Bloomfield。


3
谷歌并没有给出正确的格式,但是****它,这个方法有效! :) - Mauricio A. Cinelli
我非常怀疑这个能够很好地工作!在我看来,应该先输入国家和邮政编码! - cs0815
@ftrotter 逗号是否有助于获得更好的结果? - mfaani
我没有测试过那个,我只是假设当它们可以用作分隔符时,它们有优势。我怀疑一个详细说明“带逗号”和“不带逗号”之间差异的答案会比我的更好,我会点赞支持它。 - ftrotter

5

谷歌地址搜索的定义:

地址 - 您想要进行地理编码的街道地址,应按照所涉国家或地区的国家邮政服务使用的格式填写。应避免提供其他地址元素,例如商业名称、单元号、楼层号等。

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

如何格式化我的地理编码查询以最大化成功请求的数量?

地理编码器旨在将街道地址映射到地理坐标。因此,我们建议您根据以下准则格式化地理编码器请求,以增加成功查询的可能性:

  • 按照所涉国家或地区的国家邮政服务使用的格式指定地址。
  • 不要指定不包括在所述国家邮政服务定义的地址中的其他地址元素,例如商业名称、单元号、楼层号或套房号。
  • 在可能的情况下,优先使用场所的街道号码,而非建筑名称。
  • 在可能的情况下,优先使用街道号码寻址,而非指定交叉街口。
  • 不要提供附近地标等“提示”。

https://developers.google.com/maps/faq#geocoder_queryformat


3
我偶然发现了这个问题并找到了解决方案:
我认为可以通过使用组件过滤来找到答案,请查看: https://developers.google.com/maps/documentation/geocoding/#ComponentFiltering 以下是JavaScript示例:
var request = require('request');

var url = "https://maps.googleapis.com/maps/api/geocode/json?" +
    "address=Herengracht 180" +
    "&components=postal_code:1016 BR|country:NL" +
    "&sensor=false";

request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
  }
  else {
    console.log('error', error);
  }
});

1
使用组件过滤器的一个注意事项是,包含组件过滤器的查询只会返回与过滤器匹配的地理编码结果。如果没有找到匹配项,地理编码器将返回与过滤器本身匹配的结果。如果您希望在地理编码失败时获得ZERO_RESULTS,则可能不希望使用组件过滤器。 - Scott

3
我发现答案不完整,缺少来源。
请看这里:https://developers.google.com/places/documentation/autocomplete#place_autocomplete_responses 谷歌的地图自动完成API返回一个更简单的格式:"街道地址,城市,国家"。现在你可以使用这样的字符串来搜索一个地址,并且它应该会导向一个确切的结果。此外,如果您使用自动完成API,您还将获得一个唯一的标识符,可用于进一步的详细请求。
街道地址的格式在很大程度上取决于您所在的位置。在美国,“房屋号码,街道方向,街道名称,街道后缀”可能是有意义的,在大多数欧洲国家,它不会导致成功的查询。
欧盟大部分地区的地址都不同(通常是“街道名称号码后缀”,如“Kumpelstraat 25A”,“Psolevcu 331/26b”),我猜如果我们看一些东欧国家,我们会感到惊讶。
因此,如果您将代码绑定到单个区域(美国,欧洲大部分地区),您可能会很好地硬编码格式。如果您想要一个更灵活的系统,您需要找到目标受众的适当格式,或者查询谷歌的API之一以自动获取正确的字符串。我链接的那个非常好,但需要一个每天有免费请求限制的API密钥。

我应该补充一下,我在一个安卓APP中成功地使用了这种方法。看起来效果不错。 - John

1

0

我发现官方的国家代码如"US"、"DE"、"FR"等并不太好用。将它们替换为完整的国家名称对我来说效果更好。

我没有找到任何说明这一点的来源。


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