iClient OpenLayers,前端改变矢量瓦片样式

0 投票

前端多次改变openlayers中矢量瓦片的mapboxStyle样式,会导致浏览器内存泄漏,内存占用飙升,进而造成页面卡顿。

请问,在前端改变矢量瓦片图层的显隐和样式有什么比较高效率的方法?

                        if (layerArr && layerArr.length) {
                            let mvtLayerHelper = new MVTLayerHelper();
                            layerArr.forEach(layer => {
                                let layerType = layer.layerType;
                                if (layerType) {
                                    let sourceName = layer.name.substring(layer.name.indexOf("@") + 1);
                                    let mbStyle = styleObj[sourceName];
                                    if (mbStyle) {
                                        let changeStyle = mvtLayerHelper.changeMBStyle(mbStyle._mbStyle, layer);
                                        mbStyle.setStyle(changeStyle);
                                        map.getLayers().getArray().forEach((layer) => {
                                            if (layerType.startsWith(layer.get('name'))) {
                                                // layer.getSource().refresh();
                                                layer.changed();
                                            }
                                        })
                                    }
                                }
                            });

3月 31 分类:  80次浏览 | 用户: 行者不懂 牛刀小试 (200 分)

1个回答

0 投票
您好,这个我们这边需要先做个测试重现下问题,您这边对于样式的修改的频率大概是多少呢?我这边先模拟一下
4月 1 用户: 于浩 登峰造极 (5,662 分)
这个频率怎么说呢,就是正常的图层控制。但是mvt矢量瓦片图层中的子图层是通过改变mapboxstyle样式来实现的。
好的,我这边先在官网的范例修改线样式的例子中测试一下,看看有没有这个情况,然后测试一些chrome和ie
你好,有这个情况吗?
您好,这两天做了一些测试,暂时没有发现您的这个情况。您可以尝试更换至最新的iclient客户端尝试一下。
iclient是最新的。你数据量大一点试试呢?
...