首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenLayers 3捕获已加载的磁贴事件

OpenLayers 3捕获已加载的磁贴事件
EN

Stack Overflow用户
提问于 2014-10-14 03:18:42
回答 2查看 3.2K关注 0票数 5

如何在OpenLayers 3中捕获tiles loaded事件?在OpenLayers 2中,这可以通过从地图的基层捕获"loadend“事件来完成:

代码语言:javascript
复制
map.baseLayer.events.register('loadend' , false, function(){  });
EN

回答 2

Stack Overflow用户

发布于 2015-05-21 06:34:25

从OpenLayers v3.3开始,可以在磁贴源上订阅tileloadstarttileloadendtileloaderror事件。

您可以使用类似于以下内容的内容:

代码语言:javascript
复制
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++;
});
票数 6
EN

Stack Overflow用户

发布于 2015-04-04 06:30:44

到目前为止,您可以通过以下方式将其挂接起来,直到将某些内容添加到核心中。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26347322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档