首页 / 浏览问题 / 三维GIS / 问题详情
webgl如何手动销毁viewer?
222EXP 2021年08月20日

我在想做一个分屏联动的效果,点击弹出层弹出分屏,可是我不知道怎么去销毁viewer,执行如下代码

viewer.entities.removeAll();
viewer.destroy();
viewer._element.remove();
viewer= null;

但好像并没有真正的释放内存,多次点击弹窗之后会出现如下错信息,希望能帮帮我

An error occurred while rendering.  Rendering has stopped.
undefined
DeveloperError: Expected width to be greater than 0, actual value was 0
Error
    at new q (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:11840)
    at Function.w.typeOf.number.greaterThan (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:1560675)
    at new oa (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:238613)
    at Ak.update (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:4629266)
    at WJ (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:1346921)
    at rq (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:1341073)
    at lBa (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:1354860)
    at Lv (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:1355105)
    at Lb.render (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:4957285)
    at Qs.render (eval at <anonymous> (http://localhost:82/static/cesium/Cesium.js:25:1), <anonymous>:1:5354391)

1个回答

您好,这个销毁释放的速度有点缓慢,您那边分屏联动是怎样做的,类似于鹰眼图吗?如果是这样的话可以考虑把分屏出来的div隐藏了,不用销毁viewer
6,077EXP 2021年08月20日
不是,是多个viewer对象存在同一个页面中多次点击之后,创建16个cesium.viewer对象之后就会报错。
创建这么多viewer吗?那肯定会出问题呀,方便截图看下分屏之后的界面情况吗


我是一个弹出层,选择年份弹出不同的年份影像数据,当四次点击之后一共创建16个viewer,底图的cesium会自动弹出上面的那个错误

创建16的viewer是要16个同时显示吗?还是说只显示4个就可以了
只显示四个就行了,可这我做的是个弹出层,每次点击显示对比,点四次就挂了。所以我就想着销毁viewer但是好像没啥作用
每次点击对比的时候只有第一次创建4个viewer,之后每次点击都在之前的基础上替换场景里面的影像服务就可以了,意思就是只创建4个viewer然后重复利用
我也是这么想的,可我还是有点不死心。因为我无法控制点击图层的数量最多9个图层同时显示。销毁咋就没用了。。。或者我单独重开一个页面对当前页面的cesium应该不会有影像吧?
因为viewer的销毁是缓慢释放的,所以就会导致有的时候还没释放完就又新建又销毁了,多重复几次自然就崩了。单独开一个页面自然是没有影响的
我重新开了个窗口展示,问题没有了,就是重新开窗口有点丑。。。。
...