Cesium--Entity

541 阅读2分钟

描述

Entity 是 Viewer 的一个属性,可以在地球中添加点、线、面、几何体等实体,而 entities 则是 示例的集合对象。

在地图中添加一个球体

    viewer.entities.add({
        // 设置对象的名称
        name: "Saturn",
        // 对象的定位
        position: Cesium.Cartesian3.fromDegrees(
            -95.0,
            45.0,
            300000.0
        ),
        // 设置球体
        ellipsoid: {
            radii: new Cesium.Cartesian3(200000.0, 200000.0, 200000.0),
            material: new Cesium.Color(0.95, 0.82, 0.49),
        },
    });

image.png

Entity 的接口

1、材质

材质就是控制对象的显示样式,比如颜色、透明度、纹理贴图等等,常设置的就是颜色和透明度

设置球体的颜色、透明度

    viewer.entities.add({
        name: "Saturn",
        position: Cesium.Cartesian3.fromDegrees(
            -95.0,
            45.0,
            300000.0
        ),
        ellipsoid: {
            radii: new Cesium.Cartesian3(200000.0, 200000.0, 200000.0),
            material: Cesium.Color.RED.withAlpha(0.5), // 设置球体为红色且透明度为 0.5
        },
    });

image.png

2、边框和填充

设置属性 fill(默认为true)和 outline(默认为false)来确定是否显示填充和边框,设置 material 为填充样式,outlineColor 和 outlineWidth 对应边框的颜色和宽度

    viewer.entities.add({
        name: "Saturn",
        position: Cesium.Cartesian3.fromDegrees(
            -95.0,
            45.0,
            300000.0
        ),
        ellipsoid: {
            radii: new Cesium.Cartesian3(200000.0, 200000.0, 200000.0),
            material: Cesium.Color.RED.withAlpha(0.5), // 设置球体为红色且透明度为 0.5
            height: 200000.0,
            fill: true, // 是否显示填充
            outline: true, // 是否显示边框,必须设置height,否则无法显示
            outlineColor: Cesium.Color.BLUE.withAlpha(0.5), // 边框样式
            outlineWidth: 10.0// 边框长度
        },
    });

image.png

3、贴图

设置 material 为图片url,可以将图片填充到对象中

    viewer.entities.add({
        name: "Saturn",
        position: Cesium.Cartesian3.fromDegrees(
            -95.0,
            45.0,
            300000.0
        ),
        ellipsoid: {
            radii: new Cesium.Cartesian3(200000.0, 200000.0, 200000.0),
            material: './Snipaste_2022-02-14_00-50-03.png', // 贴图
            height: 200000.0,
            fill: true, // 是否显示填充
            outline: true, // 是否显示边框,必须设置height,否则无法显示
            outlineColor: Cesium.Color.BLUE.withAlpha(0.5), // 边框样式
            outlineWidth: 10.0// 边框长度
        },
    });

image.png

4、垂直拉伸

设置 extrudedHeight 可将面拉伸成体

    viewer.entities.add({
        position: Cesium.Cartesian3.fromDegrees(103.0, 40.0),
        ellipse: {
            semiMinorAxis: 250000.0,
            semiMajorAxis: 400000.0,
            height: 200000.0,
            extrudedHeight: 400000.0, // 将面拉伸成体
            fill: true,
            material: Cesium.Color.RED.withAlpha(0.5),
            outline: true, // 是否显示边框,必须设置height,否则无法显示
            outlineColor: Cesium.Color.BLUE.withAlpha(0.5), // 边框样式
            outlineWidth: 10.0// 边框长度
        }
    });

image.png

5、场景中 entity 管理

viewer.entities属性实际上是一个 EntityCollecton 对象,是 entity 的一个集合,提供了add、remove、removeAll 等接口来管理场景中的 entity

    Cesium.EntityCollection.collectionChangedEventCallback(collection, added, removed, changed)
    add(entity) → Entity
    computeAvailability() → TimeInterval
    contains(entity) → Boolean
    getById(id) → Entity
    getOrCreateEntity(id) → Entity
    remove(entity) → Boolean
    removeAll()
    removeById(id) → Boolean
    resumeEvents()
    suspendEvents()