Я видел несколько похожих вопросов, например, как удалить все примитивы и так далее, но ни один из ответов мне не помог. Я загружаю несколько файлов CZML в свой цезий, и в то же время мне нужно добавить некоторые экземпляры геометрии, такие как код, который я предоставил здесь, в мой цезиевый файл, используя данные из моего CZML.
В моей модели есть две ситуации, в одной из них я хочу удалить все свои примитивы, источники данных и объекты, для которых я использовал следующий метод reset()
. Когда я пытался удалить примитивы и объекты, у меня было DeveloperError: This object was destroyed, i.e., destroy() was called.Error
, а когда я просто удалял примитив, он говорил, что некоторые объекты уже существуют в коллекции, что означает, что он не может удалить все объекты.
Во втором случае я просто хочу удалить те экземпляры геометрии, которые я создал, но я хочу сохранить другие объекты и источники данных. Если я удалю все примитивы, я потеряю некоторые сущности, которые мне нужны.
У меня есть метод загрузки CZML для создания экземпляров геометрии следующим образом:
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;
}
};
Мой метод сброса следующий:
function reset(){
clock.multiplier = 1.0;
var primitives = scene.primitives.removeAll();
viewer.dataSources.removeAll();
viewer.entities.removeAll();
};
getRandomColor — это функция для случайной генерации определенных цветов цезия. Я определяю этот метод, потому что хочу генерировать определенные случайные цвета (например, только ЗЕЛЕНЫЙ, ЖЕЛТЫЙ, СИНИЙ и КРАСНЫЙ).