我正在使用Google's Geocoding API来处理自由格式的地址数据,并尝试了解结果(subpremise
,administrative_area_level_2
等)。此时我只对美国的地址感兴趣,并希望将结果格式化为街道地址,城市和州代码。状态代码似乎很简单(administrative_area_level_1
),但其他代码更模糊。是城市locality
还是sublocality
或两者甚至更多?街道地址本身似乎可以是其他字段的任意数量的组合。
理想情况下,我只想取出formatted_address
,删除城市,州,邮政编码和国家/地区代码,并将剩下的内容保留为“街道地址”。是否有处理所有这些字段的指导或建议,至少在大多数情况下(常规地址,单位号码地址等)?
答案 0 :(得分:7)
street_number
和route
locality
administrative_area_level_1
postal_code
country
请注意,Google会忽略任何类型的单元号(例如“Apt 13A”)。你必须自己补充一下。
通过地理编码器运行数据样本并手动检查结果应确认您已获得所需内容。
答案 1 :(得分:1)
documentation似乎很清楚地涵盖了各个领域的含义。
你还没说过你在做什么语言,但我认为这会help。
答案 2 :(得分:1)
我正在搜索页面上对Nearlots.com进行反向地理编码。基本上,用户在地图上的某处删除标记,然后在搜索框中打印地址。
我只是打印'formatted_address'并放弃它,如果不存在的话。这将给你这样的东西:“275-291 Bedford Ave,Brooklyn,NY 11211,USA”。这已经绰绰有余了 - 你总能在最后剥离美国。
答案 3 :(得分:0)
我认为您需要使用'route'作为街道地址。
我使用相同的服务,根据我的经验,“路线”总是相当于街道地址,即使该位置实际上不是街道!
我认为你已经确定了如何找出城市名称。等我采取的方法相同;查看几个不同位置的各种API结果,并查看哪个字段可以获得最一致的结果。
答案 4 :(得分:0)
经过几个小时的努力,我无法持续提取单位/房间/子房屋。拥有这个细节比能够专门分开它更重要,所以我使用它来解决它。
var componentForm = {
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
function fillInAddress(place) {
for (var component in componentForm) {
document.getElementById(component).value = '';
document.getElementById(component).disabled = false;
}
for (var i = 0; i < place.address_components.length; i++) {
var addressType = place.address_components[i].types[0];
if (componentForm[addressType]) {
var val = place.address_components[i][componentForm[addressType]];
document.getElementById(addressType).value = val;
}
}
var parts = $("#searchField").val().split(",");
$("#street_number").val(parts[0]);
}
我已经正常提取了自动完成的信息,但跳过&#34; street_number&#34;和&#34;路线&#34;。然后在选择后对自动完成值进行简单拆分并使用第一部分,整体返回街道地址(包括工厂/公寓/房屋和街道名称)。
这项工作给了我适合我需要的结果。祝你好运!