我以用户输入其位置的形式实施Google地方信息。该位置可以是完整地址,也可以只是一个城市。
我想获取用户提供的地址的每个单独组件。获取每个组件的最佳方式是什么,即地址,城市,州,邮政编码和国家/地区。
在下面的代码中,我得到的组件看起来像是一个数组。我是否必须循环访问它,或者是否有直接访问每个组件的方法?
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', function () {
var places = new google.maps.places.Autocomplete(document.getElementById('location'));
google.maps.event.addListener(places, 'place_changed', function () {
var place = places.getPlace();
var components = place.address_components;
});
});
</script>
答案 0 :(得分:4)
循环可能是最简单的。没有直接的方式直接跳到例如state
地址组件(如果存在一个),它是一个简单的数组。
您还可以将数组处理为允许按类型直接查找的内容:
var components_by_type = {};
for (var i = 0; i < place.address_components.length; i++) {
var c = place.address_components[i];
components_by_type[c.types[0]] = c;
}
console.log(components_by_type['state'].short_name);
如果你想要处理的不仅仅是每个组件中的第一个类型,那将会变得更加复杂。
答案 1 :(得分:1)
在这里查看来自google的示例:
var address = '';
if (place.address_components) {
address = [
(place.address_components[0] && place.address_components[0].short_name || ''),
(place.address_components[1] && place.address_components[1].short_name || ''),
(place.address_components[2] && place.address_components[2].short_name || '')
].join(' ');
}
这是创建的功能:温哥华大温哥华地区(从下面的链接)。
因此,您可以直接访问place.address_components
中的每个array
。
然后做你想做的事。
以下是此示例的链接:
https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete