我有一个脚本,它有2个输入字段,原点和目的地,并根据此信息输出我所在的区域。并且工作正常,如果有人试图测试它将地址自动完成工作的魅力,我唯一的问题是包括一个功能,通过鼠标点击插入地址自动完成,自动完成不会启动,只是自由。所有这些逻辑都插入到上面的事件列表中:
var origin_input = document.getElementById('origin-input');
var destination_input = document.getElementById('destination-input');
var counter = 0;
//Add listener
google.maps.event.addListener(map, 'click', function(event) {
pos.lat = event.latLng.lat();
pos.lng = event.latLng.lng();
var latLng = new google.maps.LatLng(pos.lat, pos.lng);
geocoder.geocode({
latLng: latLng
},
function(responses)
{
if (responses && responses.length > 0)
{
counter+=1;
if(counter == 1){
origin_input.value= responses[0].formatted_address;
}else if(counter == 2){
destination_input.value=responses[0].formatted_address;
//console.log(responses[0].formatted_address);
}
}
else
{
alert('Not getting Any address for given latitude and longitude.');
}
}
);
})
答案 0 :(得分:1)
我不确定你是什么意思"自动完成功能没有启动,只是通过" ,你只需设置输入的值,并且这适合我。
什么行不通:2点击后计数器将大于2,两个条件都不会匹配。
修复(将在2个输入之间切换):
google.maps.event.addListener(map, 'click', function(event) {
pos.lat = event.latLng.lat();
pos.lng = event.latLng.lng();
var latLng = new google.maps.LatLng(pos.lat, pos.lng);
geocoder.geocode({
latLng: latLng
},
function(responses)
{
if (responses && responses.length > 0)
{
counter=(counter)?0:1;
if(counter){
origin_input.value= responses[0].formatted_address;
origin_autocomplete.set('place',responses[0]);
google.maps.event.trigger(origin_autocomplete,'place_changed');
}else {
destination_input.value=responses[0].formatted_address;
destination_autocomplete.set('place',responses[0]);
google.maps.event.trigger(destination_autocomplete,'place_changed');
}
}
else
{
alert('Not getting Any address for given latitude and longitude.');
}
});
});