2017-05-03 32 views
-1

我在地圖上有一個可拖動的標記。我在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'); 
}); 

}

任何人可以幫助我什麼,我做錯了。先謝謝你。

回答

0

你不能在這樣一個功能分配您的谷歌事件:

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

如果我不能指定功能,那麼你提出@Patrik肯 –

+0

該解決方案內的谷歌事件,您將需要複製所有的代碼來分配Google事件轉換爲Ajax響應函數,以便將事件再次分配給新標記 –

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