1.创建一个实体
const point1 = new Cesium.Entity({
position: Cesium.Cartesian3.fromDegrees(115, 39),
point: {
pixelSize: 10, //点像素大小
color: Cesium.Color.RED, //只能用Cesium.Color
outlineColor: Cesium.Color.WHITE,
outlineWidth: 3,
},
});
viewer.entities.add(point1);
//默认 fill=true, outline=false,
2.获取实体
viewer.entities.getById("pn")//pn为实体的id
3.修改实体
viewer.entities.getById("pn").point.color = Cesium.Color.PINK
4.删除实体
viewer.entities.removeById("pn")
5.判断id对应实体、实体是否存在
let en = viewer.entities.getOrCreateEntity(point1)//如果该 id 对应的实体不存在,则将其添加到集合中
console.log(en)
const isExist = viewer.entities.contains(en)//通过 contains 判断实体是否存在,则返回true,否则返回false
6.性能优化 (未)
在批量添加或修改实体时,可以使用viewer.entities.suspendEvents()
和viewer.entities.resumeEvents()
方法来提高性能
// 暂停事件处理
viewer.entities.suspendEvents();
// 执行批量更新
for (let i = 0; i < 1000; i++) {
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(Math.random() * 360 - 180, Math.random() * 180 - 90),
point: {
pixelSize: 10,
color: Cesium.Color.RED,
},
});
}
// 恢复事件处理
viewer.entities.resumeEvents();
viewer.entities.suspendEvents()
和 viewer.entities.resumeEvents()
这两个方法只能用于暂停和恢复 Cesium 实体集合的事件处理。它们只能用于控制与实体相关的事件,不能用于控制场景中其他元素的事件。
7.
const recPrimitive = () => {
var primitiveCollection = viewer.scene.primitives
// var primitiveCollection = new Cesium.PrimitiveCollection()
// primitiveCollection.destroyPrimitives = false
// viewer.scene.primitives.add(primitiveCollection)
let arr = [
[95.0, 39.0, 100.0, 42.0],
[95.0, 43.0, 100.0, 45.0],
[95.0, 46.0, 100.0, 49.0]
]
arr.forEach((item, index) => {
//定义几何形状
var rectangle = new Cesium.GeometryInstance({
id: 'rect_' + index,
geometry: new Cesium.RectangleGeometry({
rectangle: Cesium.Rectangle.fromDegrees(item[0], item[1], item[2], item[3])
//height: 10000.0
})
})
//定义外观
var rectangleAppearance = new Cesium.EllipsoidSurfaceAppearance({
material: Cesium.Material.fromType('Water')
})
//创建Primitive
var addRectangleGeometry = new Cesium.Primitive({
geometryInstances: rectangle,
appearance: rectangleAppearance
})
viewer.scene.primitives.add(addRectangleGeometry)
// if (!primitiveCollection.contains(addRectangleGeometry))
// primitiveCollection.add(addRectangleGeometry)
})
// var primitiveCollection = new Cesium.PrimitiveCollection()
// primitiveCollection.destroyPrimitives = false
// viewer.scene.primitives.add(primitiveCollection)
}