20

leaflet.jsを使用してマップアプリケーションを構築しようとしていますが、.offメソッドの使用方法がわかりません。ドキュメントには例がなく、オンラインで他に何も見つからないようです。私は問題をより単純なコードのチャンクにまとめたので、私の質問はより明確になるでしょう。

基本的に、「クリックを有効にする」リンクをクリックすると、クリックするたびにマップにマーカーを追加するイベントリスナーが追加されるように設定しています。「クリックを無効にする」をクリックしたときに、そのイベントリスナーを削除したいと思います。

こちらがデモへのリンクです

これが私が今持っているコードです。

$(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

私はすでにたくさんの異なることを試したので、「this.disableClick」全体は私が試した最新の奇妙なことです。誰か手がかりがありますか?

4

1 に答える 1

36

on関数をoff参照渡しする必要があります。

function doStuff() { ... }

map.on('click', doStuff);
...
map.off('click', doStuff);
于 2012-04-26T09:58:49.393 に答える