问题:
删除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)