jquery $ .post无法处理google marker拖动事件

时间:2017-05-03 07:11:59

标签: javascript google-maps

我的地图中有一个可拖动的标记。我在draggableMarker()函数中创建了这个可拖动的地图。当我拖动此标记时,它将生成一个jquery帖子来检查标记是否在数据库中。如果可用,则此标记必须返回其原始位置。这里我所做的是如果marker在数据库中然后是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');
});

}

任何人都能帮我解决我做错了什么。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您无法通过以下功能分配您的Google活动:

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

收到Ajax回复后,新地图标记不再考虑该事件。你必须像这样重新分配

M_PI

答案 1 :(得分:0)

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