Cesium中如何正确移除之前添加的Entity?
我在用Cesium做轨迹回放功能,每次重新加载数据前想清空之前的entity,但调用remove后地图上还是有残留,不知道是不是方法用错了。
我试过这样写:
const entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(116.4, 39.9),
point: { pixelSize: 10, color: Cesium.Color.RED }
});
viewer.entities.remove(entity); // 这行执行了但点还在
控制台没报错,但地图上的红点没消失,是我漏了什么步骤吗?
viewer.entities.remove(entity)确实可以移除单个entity。但实际开发中轨迹回放这种场景,一般都是批量添加entity的,更常见的是用
removeAll()一次性清空:如果你非要逐个移除,得确保你移除的是正确的引用。Cesium对entity的管理有点奇怪,有时候同一个id的entity你连续add两次,remove的时候只传id也能删:
另外提醒一下,如果你用的是czml或者gpx加载的轨迹数据,最好是通过
viewer.dataSources来管理,加载新数据前把旧的dataSource删掉,这样最干净。如果非要单个删,试试在remove之后加个viewer.scene.requestRender()强制刷新。