7

我正在使用Google 的地理编码 API来处理自由格式的地址数据,并试图理解结果(subpremiseadministrative_area_level_2等)。此时我只对美国的地址感兴趣,并希望将结果格式化为街道地址、城市和州代码。州代码看起来很简单(administrative_area_level_1),但其他代码更模糊。是城市locality还是sublocality两者兼而有之,甚至更多?街道地址本身似乎可以是其他字段的任意数量的组合。

理想情况下,我只想去掉formatted_address,去掉城市、州、邮政编码和国家代码,并保留剩下的作为我的“街道地址”。是否有任何指导方针或建议来处理所有这些领域,至少在大多数情况下(常规地址、带有单元编号的地址等)?

4

5 回答 5

8
  • 街道地址是street_numberroute
  • 城市是locality
  • 状态是administrative_area_level_1
  • 邮编是postal_code
  • 国家是country

请注意,Google 会忽略任何类型的单元编号(例如“Apt 13A”)。您必须自己重新添加。

通过地理编码器运行数据样本并手动检查结果应确认您获得了所需的内容。

于 2011-06-15T17:17:01.537 回答
1

文档似乎非常清楚地涵盖了各个领域的含义。

你还没有说你正在使用什么语言,但我认为这会有所帮助

于 2011-06-10T23:53:49.253 回答
1

我正在搜索页面中的 Nearlots.com 上进行反向地理编码。基本上,用户在地图上的某处放置一个标记,然后我在搜索框中打印一个地址。

我只是打印'formatted_address',如果它不存在就放弃。这会给你这样的东西:“275-291 Bedford Ave, Brooklyn, NY 11211, USA”。这已经绰绰有余了——你总是可以在最后去掉美国。

于 2011-06-13T21:07:45.570 回答
0

我认为您需要使用“路线”作为街道地址。

我使用相同的服务,根据我的经验,“路线”始终等同于街道地址,即使该位置实际上不是街道!

我想你已经确定了如何计算城市名称。等等。这是我采取的相同方法;查看几个不同位置的各种 API 结果,看看哪个字段为您提供最一致的结果。

于 2011-06-15T15:08:29.063 回答
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]);
}

我已经像往常一样从自动完成中提取了信息,尽管跳过了“street_number”和“route”。然后在选择后对自动完成值进行简单拆分并使用第一部分,返回整个街道地址(包括工厂/公寓/房屋和街道名称)。

这项工作给了我结果,可以很好地满足我的需要。祝你好运!

于 2016-11-11T20:02:23.690 回答