所以我用leafet.js制作这个应用程序。
此应用程序要求我必须手动将网格绘制到屏幕上,
我已经注意了draw_grid()
函数,它将一堆多边形绘制到屏幕上。
我有这个函数,我打电话来触发传单地图的更改。
zoom
- 缩放整数和size
是类似{x:1,y:1}
的字典,用于控制绘制到地图上的图块的大小。 (他们需要随着地图绘制单位的变化而改变地图上的纬度,长点。
function changeZoom(zoom,size){
map.setZoom(zoom);
setSize(size);
setTimeout(drawGrid,500)s;
}
我必须使用setTimeout的原因是因为传单ignores
任何绘图命令到地图上(我正在做一个图层),直到地图完成动画制作。
如何异步执行此操作?
答案 0 :(得分:43)
您可以使用API here
中描述的map.zoomend
事件
map.on('zoomend', function() {
drawGrid();
});
地图完成缩放动画后,将调用drawGrid
函数。
答案 1 :(得分:14)
在Leaflet的较新版本中,“zoomed
”不再是一个事件。现在有“zoomstart
”和“zoomend
”事件:
map.on("zoomstart", function (e) { console.log("ZOOMSTART", e); });
map.on("zoomend", function (e) { console.log("ZOOMEND", e); });
答案 2 :(得分:0)
这是单击托管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");
});