我用Googles将自己的头发拉开自动完成。 我的页面中有5个输入,我想绑定到谷歌地方自动完成。 页面加载正常,库初始化所有输入都很好。 但是,当我单击自动完成的结果时,我在调试器中意识到错误的输入字段已传递给侦听器。 以下是我初始化输入的方法:
var autocomplete = {};
var autocompletesWraps = ['from', 'destination','publish-dn','publish-an','publish-st'];
function initautocomplete(){
//Bind the Town input fields to google apis
directionsService = new google.maps.DirectionsService();
for(var index=0;index<autocompletesWraps.length;index++){
var name = autocompletesWraps[index];
if(!document.getElementById(name)) {
return;
}
autocomplete[name] = new google.maps.places.Autocomplete(document.getElementById(name), { types: ['geocode'],componentRestrictions: {country: 'nz'} });
google.maps.event.addListener(autocomplete[name], 'place_changed', function() {
var place = autocomplete[name].getPlace();
var latitude = place.geometry.location.lat();
var longitude = place.geometry.location.lng();
var town = place.formatted_address.split(',')[0];
document.getElementById(name).setAttribute('data-l',latitude);
document.getElementById(name).setAttribute('data-g',longitude);
}
});
}
}
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXX&libraries=places&callback=initautocomplete"></script>
当我查看调试器时,我发现它始终是我的数组autocompletesWraps的最后一个输入id,它被传递给了监听器。
我的选项已经用完了!如果有人能提供帮助,那就太棒了! 干杯
答案 0 :(得分:0)
好的, 我通过为每个输入创建全局变量来解决这个问题。 然后在init期间逐个填充它们。 一切正常!