Я использую карты на своей веб-странице, и у меня есть следующий 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);
}
});
}
Это должно работать:
// 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();
}
});
}