Отключение событий JS

1

Я использую карты на своей веб-странице, и у меня есть следующий JS-код:

map.on('zoomend', function() {
   populate();
});

Когда я масштабирую карту, вызывается функция populate() (она использовалась для размещения некоторых маркеров на карте).

Я хочу, чтобы отключить событие "zoomend", когда populate делает все, что угодно, поэтому мне хотелось бы что-то вроде этого:

map.on('zoomend', function() {
   // DISABLE ZOOMEND EVENT 
   populate();
   // ENABLE ZOOMEND AGAIN
});

Как я могу это сделать?

Спасибо!

EDIT: вот часть моей функции populate()

function populate() {
    $.post('/LoadMarkersServlet', {
       lat_min: map.getBounds().getNorthWest(),
       lat_max: map.getBounds().getSouthEast(),
       //more parameters
       //...
    }, function (responseText) {
       if(responseText !== null) {
           var p = JSON.parse(responseText);

           for(var i=0; i<p.length; i++){
               // here I read the responseText and put markers where it says
           }
           map.addLayer(markers);
       }
    });
}
Теги:
leaflet
events

1 ответ

1
Лучший ответ

Это должно работать:

// name your event listener
map.on('zoomend', function handleZoomEnd() {
  // turn it off temporarily
  map.off('zoomend', handleZoomEnd);
  // pass a function to re-enable it after ajax completes
  populate(function () {
    map.on('zoomend', handleZoomEnd);
  });
});

// accept callback function as parameter
function populate(cb) {
    $.post('/LoadMarkersServlet', {
       lat_min: map.getBounds().getNorthWest(),
       lat_max: map.getBounds().getSouthEast(),
       //more parameters
       //...
    }, function (responseText) {
       if(responseText !== null) {
           var p = JSON.parse(responseText);

           for(var i=0; i<p.length; i++){
               // here I read the responseText and put markers where it says
           }
           map.addLayer(markers);

           // this re-enables zoomend callback
           cb();
       }
    });
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню