entities与primitive的区别

时间:2023-01-27 08:53:20

在cesium中场景中添加的几何事物,有两种方法供我们选择

1.创建entity,将entity添加到view.entities中

该方法创建一个实体,实体要有关联的几何图形,并且实体必须要设置位置才可以,否则场景中显示不出来

例如:

//实体位置

var boxPosition=Cesium.Cartesian3.fromDegrees(102.53, 24.01);//该实体位置,可以直接使用笛卡尔坐标就可以

//实体

var boxEntity=new Cesium.Entity(

{

name:"立方体实体",
show:true,
description:"点击的实体为立方体",
box:boxGra,//与实体关联的图形
position:boxPosition

});

对于position属性值的类型为:PositionProperty,该类是一个基类,它的子类都可以使用。

例如:ConstantPositionPropertySampledPositionProperty类等,他们有不同的用法,

如:位置属性需要设置坐标系和位置点

var boxPosition2=new Cesium.ConstantPositionProperty(boxPosition, Cesium.ReferenceFrame.FIXED);

所以position的值可以为cartesian3或者ConstantPositionProperty


2.通过创建primitive(几何体),将几何体添加到场景中

例如

var rectangleGeo=new Cesium.RectangleGeometry(
{
//通过指定经纬度来创建矩形,范围区域
rectangle:Cesium.Rectangle.fromDegrees(-140.0, 30.0, -100.0, 40.0),
vertexFormat:Cesium.PerInstanceColorAppearance.VERTEX_FORMAT,//顶点格式
});

var geometryInstance=new Cesium.GeometryInstance(

{
geometry:rectangleGeo,
id : 'rectangle',
attributes:{

color:new Cesium.ColorGeometryInstanceAttribute(1.0, 0.0, 0.0, 0.5)//颜色熟属性
}
});

//几何体实例,相当于实体
var primitive_rec=new Cesium.Primitive(
{
geometryInstances:geometryInstance,//几何实例
appearance:new Cesium.PerInstanceColorAppearance()//外观
});

scene.primitives.add(primitive_rec);//将primitive添加到场景中


这两者都可以在场景中添加几何体,但是方法是不同的。