我看到了一些类似的问题,例如如何删除所有原语等等,但没有一个答案对我有帮助。我在我的cesium上加载了几个CZML文件,同时我需要使用来自CZML的数据添加一些几何实例,比如我在这里提供的代码到我的cesium文件。
我的模型中有两种情况,其中一种情况我要删除所有我的原语,数据源和实体,我使用了TinyTds::Error: Introducing FOREIGN KEY constraint 'fk_rails_7e223a7fac' on table 'contacts' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.: ALTER TABLE [contacts] ADD CONSTRAINT [fk_rails_7e223a7fac]
方法。当我试图删除基元和实体时,我得到reset()
,当我只删除基元时,它说集合中已经存在一些实体,这意味着它不能删除所有实体。
在第二种情况下,我只想删除我创建的几何实例,但我想保留其他实体和数据源。如果我删除所有原语,我将丢失一些我需要的实体。
我在加载CZML以创建几何实例时有一个方法,如下所示:
DeveloperError: This object was destroyed, i.e., destroy() was called.Error
我的重置方法如下,
function createMap(West,East,South,North,hNumber,VNumber){
var baseSouth=South;
var vdivid=(North-South)/VNumber;
var hdivid=(East-West)/hNumber;
for (var i=0;i<hNumber;i++){
for(var j=0;j<vNumber;j++){
var rectangleInstance = new Cesium.GeometryInstance({
geometry : new Cesium.RectangleGeometry({
rectangle : Cesium.Rectangle.fromDegrees((West+j*vdivid), baseSouth,(West+(j+1)*vdivid) , baseSouth+hdivid)
}),
id : 'rectangle'+i+'.'+j,
attributes : {
color : new Cesium.ColorGeometryInstanceAttribute.fromColor(getRandomColor(0.2))
}
});
scene.primitives.add(new Cesium.GroundPrimitive({
geometryInstance : rectangleInstance
}));
baseSouth=baseSouth+hdivid;
}
};
getRandomColor是一个随机生成某些特定铯颜色的函数。我定义了这个方法,因为我想生成一些特定的随机颜色(例如只有绿色,黄色,蓝色和红色)
答案 0 :(得分:0)
感谢您发布重置功能。我相信这里的问题是你对scene.primitives.removeAll()
的调用是删除属于dataSource的原语。但在这种情况下,我认为简单地重新订购清除是安全的。
尝试一下:
function reset() {
clock.multiplier = 1.0;
// First, remove all dataSources. Removing a dataSource will
// automatically remove its associated entities & primitives.
viewer.dataSources.removeAll();
// Next, remove any remaining entities that weren't part of a dataSource.
viewer.entities.removeAll();
// Finally, it is safe to remove any remaining primitives, as we can
// now be certain they did not belong to any dataSource or entity.
scene.primitives.removeAll();
};