Javascript jquery$.post无法处理google标记拖动事件

Javascript jquery$.post无法处理google标记拖动事件,javascript,google-maps,Javascript,Google Maps,我的地图上有一个可拖动的标记。我在draggableMarker()函数中创建了这个draggable映射。当我拖动这个标记时,它将生成一个jquerypost来检查标记是否在数据库中。如果可用,则此标记必须返回其原始位置。这里我所做的是,如果标记在数据库中,那么setMap(null)并再次调用draggableMarker()函数,该函数工作正常,但当我再次尝试拖动此标记时,此jquery帖子不起作用 这是我在代码中尝试过的 function initialize() { myMap

我的地图上有一个可拖动的标记。我在draggableMarker()函数中创建了这个draggable映射。当我拖动这个标记时,它将生成一个jquerypost来检查标记是否在数据库中。如果可用,则此标记必须返回其原始位置。这里我所做的是,如果标记在数据库中,那么setMap(null)并再次调用draggableMarker()函数,该函数工作正常,但当我再次尝试拖动此标记时,此jquery帖子不起作用

这是我在代码中尝试过的

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');
});