bug过程,我首页首先加载了动态立体墙体,然后飞行定位到可视域点位,加载可视域范围,操作关闭可视域(到这里一切正常),然后操作隐藏电子围栏隐藏show=false,无任何其他操作,过大概一秒整个webgl页面卡死。控制台没有任何错误。
有时间的话我可以给你远程演示复现一下
我贴一下代码
墙体相关代码
/**
* 渐变色围栏
* @param viewer
* @param name 名称(保证唯一性)
* @param points 点位数据
* @param size 点位个数
* @param trailImage 渐变效果贴图
* @param color 墙体颜色
* @returns {Entity}
*/
export function addGradientColorWall(viewer, {name,points,size,trailImage,color}){
let flag = 100;
return viewer.entities.add({
id: name,
name: name,
wall: {
positions: Cesium.Cartesian3.fromDegreesArray(points),
maximumHeights: new Array(size).fill(160),
//minimumHeights : new Array(size).fill(100),
minimumHeights : new Cesium.CallbackProperty(function (time) {
flag += 1;
if (flag > 160) {
flag = 100;
}
return new Array(size).fill(flag);
}, false),
material: new Cesium.ImageMaterialProperty({
image: trailImage,
transparent: true,
color: color? Cesium.Color.fromCssColorString(color) : Cesium.Color.ORANGERED
})
},
});
}
//关闭可视域代码
let viewShed3D = this.getViewShed3D && this.getViewShed3D()
if(viewShed3D){
viewShed3D.distance = 0.1;
viewShed3D.clear();
viewShed3D.destroy();
viewShed3D = null;
}
加载可视域代码
/**
* 构建单个可视域
* @param viewer
* @param option
*/
export function createViewShed3D(viewer,option){
let viewShed3D = new Cesium.ViewShed3D(viewer.scene);
viewShed3D.viewPosition = [option.viewPoint.x, option.viewPoint.y, option.viewPoint.z]; //可视点位
viewShed3D.setDistDirByPoint([option.targetPoint.x, option.targetPoint.y, option.targetPoint.z]); //可视域目标点
viewShed3D.visibleAreaColor = Cesium.Color.fromCssColorString('rgba(104,255,54,0.2)');//可见区域
viewShed3D.hiddenAreaColor = Cesium.Color.fromCssColorString('rgba(204,28,28,0.7)');//隐藏区域
return viewShed3D;
}