是否有任何标准格式可以将地址字符串提供给Google GeoCoding API,以便在地图上获得最准确的结果。
对于Eg。以下查询未给出正确的结果。
http://maps.googleapis.com/maps/api/geocode/xml?address=bloom,Bloomfield,CT,06002,USA&sensor=false
谢谢
Mandeep
答案 0 :(得分:24)
我认为建议的格式是:
House Number, Street Direction, Street Name, Street Suffix, City, State, Zip, Country
显然,结果越不具体,您可以提供的信息越少。
在您的示例中,地理编码器正在搜索名为“bloom”的街道,其中在OH而不是CT中存在类似的匹配。从查询中删除'bloom'然后搜索返回Bloomfield,CT。
答案 1 :(得分:5)
Google地址搜索的定义:
地址 - 您要根据相关国家/地区的国家邮政服务使用的格式进行地理编码的街道地址。应避免使用其他地址元素,例如公司名称和单位,套房或楼层号。
https://developers.google.com/maps/documentation/geocoding/#geocoding
如何格式化地理编码器查询以最大化成功请求的数量?
地理编码器旨在将街道地址映射到地理坐标。因此,我们建议您按照以下指南格式化地理编码器请求,以最大限度地提高查询成功的可能性:
答案 2 :(得分:4)
我发现答案不完整,缺乏来源。
请看这里:https://developers.google.com/places/documentation/autocomplete#place_autocomplete_responses
谷歌的地图自动填充API返回了一种更简单的格式:"街道地址,城市,国家/地区" 现在你可以使用这样的字符串来搜索一个地址,它应该会产生一个确切的结果。 此外,如果您使用自动完成API,您将获得一个唯一标识符,可用于进一步的详细请求。
街道地址的格式很大程度上取决于您实际所在的位置。 在美国"门牌号码,街道方向,街道名称,街道后缀"可能有意义,在欧洲大部分地区,它不会导致成功的查询。
欧盟大部分地区的地址都不同(通常是#34;街道名称后缀"),如" Kumpelstraat 25A"," Psolevcu 331 / 26b")我想我们&如果我们看一些东方国家,我们会感到惊讶。
因此,如果您将代码绑定到一个区域(美国,大多数欧盟),您可能很难对格式进行硬编码。
如果您想拥有一个更灵活的系统,您需要找到目标受众的propper格式,或者查询googles API之一以自动获取正确的字符串。
我链接的那个非常好,但需要一个API密钥,每天有一个免费的请求限制。
答案 3 :(得分: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);
}
});
答案 4 :(得分:1)
无需避开公寓单位。这有效:
https://maps.googleapis.com/maps/api/geocode/xml?address=14202+N+42nd+St+Unit+301+33613
“Apt”,“Room”和“Suite”也适用
它们都返回301作为subpremise,并在“formatted_address”中显示为“#301”。
保罗发送......
答案 5 :(得分:0)
我发现像“ US”,“ DE”,“ FR”之类的官方国家/地区代码无法正常工作。用全名代替他们对我来说要好得多。
我没有找到注明来源。