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])
}
}
},