Javascript jquery$.post无法处理google标记拖动事件
我的地图上有一个可拖动的标记。我在draggableMarker()函数中创建了这个draggable映射。当我拖动这个标记时,它将生成一个jquerypost来检查标记是否在数据库中。如果可用,则此标记必须返回其原始位置。这里我所做的是,如果标记在数据库中,那么setMap(null)并再次调用draggableMarker()函数,该函数工作正常,但当我再次尝试拖动此标记时,此jquery帖子不起作用 这是我在代码中尝试过的Javascript jquery$.post无法处理google标记拖动事件,javascript,google-maps,Javascript,Google Maps,我的地图上有一个可拖动的标记。我在draggableMarker()函数中创建了这个draggable映射。当我拖动这个标记时,它将生成一个jquerypost来检查标记是否在数据库中。如果可用,则此标记必须返回其原始位置。这里我所做的是,如果标记在数据库中,那么setMap(null)并再次调用draggableMarker()函数,该函数工作正常,但当我再次尝试拖动此标记时,此jquery帖子不起作用 这是我在代码中尝试过的 function initialize() { myMap
function initialize() {
myMap = new google.maps.Map(document.getElementById('map-single'), {
zoom: 12,
center: {lat: parseFloat($('#mun_lat').val()), lng: parseFloat($('#mun_lon').val())},
mapTypeControlOptions: {
mapTypeIds: google.maps.MapTypeId.ROADMAP
}
});
draggableMarker();
function draggableMarker(){
current = new google.maps.Marker({
map: myMap,
draggable: true,
icon: com,
animation: google.maps.Animation.DROP,
position: {lat: parseFloat($('#lat').val()), lng: parseFloat($('#lat2').val())},
});
}
google.maps.event.addListener(current,'dragend',function(event)
{
$('#curs1').val(current.position.lng());
$('#curs2').val(current.position.lat());
$.post("checkAvailable.php",
{
lon: current.position.lng(),
lat: current.position.lat()
},
function(data){
current.setMap(null);
draggableMarker();
}
}, 'json');
});
}
谁能帮我一下我做错了什么。提前感谢您。您不能将您的Google事件分配到这样的函数中:
function assignedEvent(){
google.maps.event.addListener(current,'dragend',function(event)
{
$('#curs1').val(current.position.lng());
$('#curs2').val(current.position.lat());`enter code here`
$.post("checkAvailable.php",
{
lon: current.position.lng(),
lat: current.position.lat()
},
function(data){
current.setMap(null);
draggableMarker();
}
}, 'json');
});
}
当您收到Ajax响应时,新的映射标记不再考虑该事件。您必须像这样重新分配它
function assignedEvent(){
google.maps.event.addListener(current,'dragend',function(event) {
$('#curs1').val(current.position.lng());
$('#curs2').val(current.position.lat());
$.post("checkAvailable.php", {
lon: current.position.lng(),
lat: current.position.lat()
}, function(data) {
current.setMap(null);
draggableMarker();
assignedEvent()//Here you assign the event to the marker again
}
}, 'json');
});
}
如果我不能在函数中分配google事件,那么您建议的解决方案@Patrik KenYou必须复制将google事件分配给Ajax响应函数的所有代码,以便将事件再次分配给新标记
google.maps.event.addListener(current,'dragend',function(event) {
$('#curs1').val(current.position.lng());
$('#curs2').val(current.position.lat());
$.post("checkAvailable.php", {
lon: current.position.lng(),
lat: current.position.lat()
}, function(data) {
current.setMap(null);
draggableMarker();
google.maps.event.addListener(current,'dragend',function(event) {
$('#curs1').val(current.position.lng());
$('#curs2').val(current.position.lat());
$.post("checkAvailable.php", {
lon: current.position.lng(),
lat: current.position.lat()
}, function(data) {
current.setMap(null);
draggableMarker();
}
}, 'json');
});
}
}, 'json');
});