2012-04-25 24 views
9

Tôi đang cố gắng xây dựng một ứng dụng bản đồ bằng cách sử dụng leaflet.js và tôi không thể tìm ra cách sử dụng phương thức .off. Tài liệu này không có bất kỳ ví dụ nào và tôi dường như không thể tìm thấy bất cứ điều gì ở bất kỳ nơi nào khác trực tuyến. Tôi đã chắt lọc vấn đề thành một đoạn mã đơn giản hơn để câu hỏi của tôi có thể rõ ràng hơn.Bạn sử dụng phương thức sự kiện .off() trong leaflet.js như thế nào?

Về cơ bản tôi đã thiết lập để khi bạn nhấp vào liên kết 'bật nhấp chuột', nó sẽ thêm trình xử lý sự kiện để thêm điểm đánh dấu vào bản đồ mỗi khi bạn nhấp vào nó. Tôi muốn xóa trình xử lý sự kiện đó khi bạn nhấp vào 'tắt nhấp'.

Here is a link to the demo

Đây là mã tôi hiện có.

$(document).ready(function(){ 

var map, cloudmade, sanAntonio, polygonPoints 


map = new L.Map('map'); 
cloudmade = new L.TileLayer('http://{s}.tile.cloudmade.com/d4334cd6077140e3b92ccfae2b363070/997/256/{z}/{x}/{y}.png', { 
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>', 
    maxZoom: 18 
}); 


sanAntonio = new L.LatLng(29.4238889, -98.4933333); // geographical point (longitude and latitude) 


map.setView(sanAntonio, 13).addLayer(cloudmade); 

//everything above sets up the map 



function enableClick(){ 
    map.on('click', function(e) {  
    var marker = new L.Marker(e.latlng, {draggable:true}); 
    map.addLayer(marker); 
    });//closes the click function 

    this.disableClick = function(){ 
    map.off('click'); 
    } 

} 



//when 
$('#enable_click').click(function(){ 
    var enable_click = new enableClick() 

    $('#disable_click').click(function(){ 
    enable_click.disableClick; 
    }); 

}); 




});//closes the document ready function 

Tôi đã thử nhiều thứ khác nhau nên toàn bộ điều 'this.disableClick' này chỉ là điều kỳ lạ mới nhất mà tôi đã thử. Bất cứ ai cũng có một đầu mối?

Trả lời

17

Bạn cần phải vượt qua chức năng để onoff bằng cách tham khảo:

function doStuff() { ... } 

map.on('click', doStuff); 
... 
map.off('click', doStuff); 
+2

là chức năng vẫn còn cần thiết khi sử dụng không? – fuzz

+0

Có. Điều này có lẽ là do bạn có thể liên kết nhiều trình xử lý (hàm) với một sự kiện duy nhất. Xem http://leafletjs.com/reference.html#events – nothingisnecessary

+0

hi, tôi đã thử điều này, nhưng không có may mắn, this.map.off ('click', chức năng (evt) { console.log ("bấm vô hiệu hóa "); }); – AhammadaliPK

Các vấn đề liên quan