一、问题产生
在openlayer开发的过程中,涉及到缩略图的生成。当地图上的所有图层全部加载完毕时,执行生成缩略图业务代码。
二、问题解决
寻找源码,找到如下解决方案:
1 判断地图全部瓦片加载完毕
map.tileQueue_.getTilesLoading() == 0
这里可以设置一个interval,判断如上条件即可。
2 判断某个图层的瓦片加载完毕
这里需要为某个layer设定一个unique_id。然后将unique_id传递到加载的tile对象中去。
假如某layer如下:
let wmtsLayer = new ol.layer.Tile({
source: new ol.source.WMTS({
url: url,
projection: projection, //数据的投影坐标系
tileGrid: tileGrid,
format: "image/png",
crossOrigin: 'anonymous'
})
});
手动为wmtslayer打上一个标识:
const guid = guid();//--生成一个随机id
wmtsLayer.unique_seid = guid;
在CanvasTileLayerRenderer
类中的manageTilePyramid
函数里创建tile的地方加上一句代码: