如何在 OpenLayers 3 中捕捉瓷砖加载事件?在 OpenLayers 2 中,这可以通过从地图的基础层捕获“loadend”事件来完成:
map.baseLayer.events.register('loadend' , false, function(){ });
如何在 OpenLayers 3 中捕捉瓷砖加载事件?在 OpenLayers 2 中,这可以通过从地图的基础层捕获“loadend”事件来完成:
map.baseLayer.events.register('loadend' , false, function(){ });
tileloadstart
自 OpenLayers v3.3 起,可以在 tile 源上订阅、tileloadend
和事件。tileloaderror
您可以使用类似于以下内容的内容:
var tilesLoading = 0,
tilesLoaded = 0;
tileLayer.getSource().on('tileloadend', function () {
tilesLoaded++;
if (tilesLoading === tilesLoaded) {
console.log(tilesLoaded + ' tiles finished loading');
tilesLoading = 0;
tilesLoaded = 0;
//trigger another event, do something etc...
}
});
tileLayer.getSource().on('tileloadstart', function () {
this.tilesLoading++;
});
到目前为止,您可以通过以下方式将其连接起来,直到将某些内容添加到核心中。
tileSource.setTileLoadFunction(( function(){
var numLoadingTiles = 0;
var tileLoadFn = tileSource.getTileLoadFunction();
return (tile, src) => {
console.log(src);
if (numLoadingTiles === 0) {
console.log('loading');
}
++numLoadingTiles;
var image = tile.getImage();
image.onload = image.onerror = function(){
--numLoadingTiles;
if (numLoadingTiles === 0) {
console.log('idle');
}
};
tileLoadFn(tile, src);
};
})());
您可以在此处查看可以使用的所有图块源类:http: //openlayers.org/en/v3.4.0/apidoc/ol.source.TileImage.html?unstable= true#setTileLoadFunction