cesium开发注意点

1.id或者type,需写在最外面才生效。


2.删除entities遇到无法完全删除,只能删除一个或者漏删

Cesium imageryLayers,entity remove 删除,漏删问题

问题:

删除imageryLayers/entity 的时候,使用forEach/ for 遍历删除的时候

会实时修改 viewer.imageryLayers/viewer.entities的下标,

例如 entitys.length = 20,找到第一个设其为第10个实体)的实体删除后,

entitys.length 变成 19,而原来的第11个实体变成了第10个实体,所以循环的时候会漏掉。

解决方法:

1.倒叙遍历

for(var i=entities.length-1;i>=0;i--){

    viewer.entities.remove(entities[i])

}

2.循环删除第一个

for (var i = 0; i < entitys.length; i++) {         

    viewer.entities.remove(entitys[i]);

    i--;

  }

}

3.整删,整加

viewer.dataSources.remove(this.entityLayer);

entityLayer= new Cesium.CustomDataSource("entityLayer");

viewer.dataSources.add(this.entityLayer)


例如:

clearRanging() {

            let _this=this

            for(let i= viewer.entities.values.length-1;i>=0;i--){

                if(viewer.entities.values[i].type=='elsep' || viewer.entities.values[i].type=='endp'){

                    viewer.entities.remove(viewer.entities.values[i])

                }

            }

        },

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容