cesium

本文介绍了如何在Cesium.js中创建、获取、修改和删除实体,包括实体属性设置,以及如何使用`suspendEvents()`和`resumeEvents()`进行性能优化。
摘要由CSDN通过智能技术生成
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)
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值