Javascript 传单.js:检测地图何时完成缩放

Javascript 传单.js:检测地图何时完成缩放,javascript,asynchronous,leaflet,Javascript,Asynchronous,Leaflet,所以我用leavet.js制作这个应用程序。 这个应用程序需要我在屏幕上手动绘制网格, 我在一个draw\u grid()函数中处理了这个问题,该函数将一组多边形绘制到屏幕上 我调用这个函数来触发传单地图的更改。 zoom-缩放整数和size是一个类似于dict的{x:1,y:1},用于控制绘制到地图上的平铺的大小。(它们需要改变,因为绘制瓷砖的单位是地图上的lat长点 function changeZoom(zoom,size){ map.setZoom(zoom); set

所以我用leavet.js制作这个应用程序。 这个应用程序需要我在屏幕上手动绘制网格, 我在一个
draw\u grid()
函数中处理了这个问题,该函数将一组多边形绘制到屏幕上

我调用这个函数来触发传单地图的更改。
zoom
-缩放整数和
size
是一个类似于dict的
{x:1,y:1}
,用于控制绘制到地图上的平铺的大小。(它们需要改变,因为绘制瓷砖的单位是地图上的lat长点

function changeZoom(zoom,size){
    map.setZoom(zoom); 
    setSize(size);   
    setTimeout(drawGrid,500)s;
}

我必须使用setTimeout的原因是,在贴图完成动画制作之前,传单
会忽略贴图上的任何绘图命令(我将其作为一个图层)


如何异步执行此操作?

您可以使用API中描述的
map.zoomend
事件


一旦地图完成缩放动画,它将调用
drawGrid
函数。

在新版传单中,
缩放的
“不再是事件。现在有“
缩放开始
”和“
缩放修复
”事件:


这是管理leflet缩放控件的最佳方法

    /*Zoom Control Click Managed*/
    var bZoomControlClick = false;
    mymap.on('zoomend',function(e){
        var currZoom = mymap.getZoom();
        if(bZoomControlClick){
            console.log("Clicked "+currZoom);
        }
        bZoomControlClick = false;
    });     
    var element = document.querySelector('a.leaflet-control-zoom-in');
    L.DomEvent.addListener(element, 'click', function (e) {
        bZoomControlClick = true;
        $(mymap).trigger("zoomend");
    });
    var element1 = document.querySelector('a.leaflet-control-zoom-out');
    L.DomEvent.addListener(element1, 'click', function (e) {
        bZoomControlClick = true;
        $(mymap).trigger("zoomend");
    });

在“滚动放大”过程中,此事件似乎仍会多次触发。这是因为我正在使用触摸板吗?是否有方法检查多个事件,如“平移”和“缩放”?我还检查了“加载”事件未被触发。@SamSelikoff似乎与touchpad无关。如果不是超级快速滚动,也会通过鼠标滚轮发生。也找不到任何去盎司选项。因此,需要手动实现逻辑。
map.on("zoomstart", function (e) { console.log("ZOOMSTART", e); });
map.on("zoomend", function (e) { console.log("ZOOMEND", e); });
    /*Zoom Control Click Managed*/
    var bZoomControlClick = false;
    mymap.on('zoomend',function(e){
        var currZoom = mymap.getZoom();
        if(bZoomControlClick){
            console.log("Clicked "+currZoom);
        }
        bZoomControlClick = false;
    });     
    var element = document.querySelector('a.leaflet-control-zoom-in');
    L.DomEvent.addListener(element, 'click', function (e) {
        bZoomControlClick = true;
        $(mymap).trigger("zoomend");
    });
    var element1 = document.querySelector('a.leaflet-control-zoom-out');
    L.DomEvent.addListener(element1, 'click', function (e) {
        bZoomControlClick = true;
        $(mymap).trigger("zoomend");
    });