一、线段
// 创建线段几何实例
const instance = new Cesium.GeometryInstance({
id: "PolylineGeometry",
geometry: new Cesium.PolylineGeometry({
positions: Cesium.Cartesian3.fromDegreesArray([
108.0, 31.0,
100.0, 36.0,
105.0, 39.0
]),
width: 10.0,
})
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.PolylineMaterialAppearance({
material: Cesium.Material.fromType('Color'),
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
// 定位到指定模型位置
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(108.0, 31.0, 13000000),
orientation: {
heading: Cesium.Math.toRadians(0),
pitch: Cesium.Math.toRadians(-90),
roll: 0
},
duration: 2.0 // 飞行动画的持续时间(单位是秒)
});
二、椭圆(圆形)
// 创建椭圆几何实例
const instance = new Cesium.GeometryInstance({
geometry: new Cesium.EllipseGeometry({
center: Cesium.Cartesian3.fromDegrees(-100.0, 20.0),
semiMinorAxis: 500000.0, // semiMinorAxis和semiMajorAxis值相等则为圆形
semiMajorAxis: 1000000.0,
rotation: Cesium.Math.PI_OVER_FOUR,
vertexFormat: Cesium.VertexFormat.POSITION_AND_ST,
}),
id: "EllipseGeometry",
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.EllipsoidSurfaceAppearance({
material: Cesium.Material.fromType('Color')
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
// 定位到指定模型位置
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(-100.0, 20.0, 4000000),
orientation: {
heading: Cesium.Math.toRadians(0),
pitch: Cesium.Math.toRadians(-90),
roll: 0
},
duration: 2.0 // 飞行动画的持续时间(单位是秒)
});
三、圆形(圆柱)
// 创建圆形几何实例
const instance = new Cesium.GeometryInstance({
id: "CircleGeometry",
geometry: new Cesium.CircleGeometry({
center: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
radius: 100000.0,
extrudedHeight: 20000 // 圆形高度,形成圆柱
})
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.MaterialAppearance({
material: Cesium.Material.fromType('Color'),
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
// 定位到指定模型位置
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 2000000),
orientation: {
heading: Cesium.Math.toRadians(0),
pitch: Cesium.Math.toRadians(-90),
roll: 0
},
duration: 2.0 // 飞行动画的持续时间(单位是秒)
});
四、连廊
// 创建连廊几何实例
const instance = new Cesium.GeometryInstance({
id: "CorridorGeometry",
geometry: new Cesium.CorridorGeometry({
vertexFormat: Cesium.VertexFormat.POSITION_ONLY,
positions: Cesium.Cartesian3.fromDegreesArray([-72.0, 40.0, -70.0, 35.0, -68.0, 38.0]),
width: 100000,
extrudedHeight: 1000
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.AQUA)
},
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.PerInstanceColorAppearance({
flat: true,
translucent: false
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
// 定位到指定模型位置
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(-72.0, 40.0, 1800000),
orientation: {
heading: Cesium.Math.toRadians(0),
pitch: Cesium.Math.toRadians(-90),
roll: 0
},
duration: 2.0 // 飞行动画的持续时间(单位是秒)
});

五、圆柱(圆锥)
// 创建圆柱/圆锥几何实例
const instance = new Cesium.GeometryInstance({
id: "CorridorGeometry",
geometry: new Cesium.CylinderGeometry({
length: 20000, // 圆柱体的长度
topRadius: 20000, // 顶部半径, 值为0即为圆柱
bottomRadius: 20000, // 底部半径
vertexFormat: Cesium.VertexFormat.POSITION_AND_NORMAL // 指定顶点格式,包括位置和法线
}),
modelMatrix: Cesium.Matrix4.fromTranslation(Cesium.Cartesian3.fromDegrees(-75.0, 40.0, 10000.0)), // 圆柱体的位置
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.EllipsoidSurfaceAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.RED // 圆柱体的颜色
})
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
六、矩形
// 创建矩形几何实例
const instance = new Cesium.GeometryInstance({
id: "RectangleGeometry",
geometry: new Cesium.RectangleGeometry({
ellipsoid: Cesium.Ellipsoid.WGS84,
rectangle: Cesium.Rectangle.fromDegrees(-80.0, 39.0, -74.0, 42.0),
height: 10000.0
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.AQUA)
},
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.PerInstanceColorAppearance({
flat: true,
translucent: false
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
七、墙
// 创建墙体几何实例
const instance = new Cesium.GeometryInstance({
id: "WallGeometry",
geometry: new Cesium.WallGeometry({
positions: Cesium.Cartesian3.fromDegreesArrayHeights([
19.0, 47.0, 10000.0,
19.0, 48.0, 10000.0,
20.0, 48.0, 10000.0,
20.0, 47.0, 10000.0,
19.0, 47.0, 10000.0
])
}),
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.MaterialAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.BLUE
}),
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)

八、多边形
// 创建多边形几何实例
const instance = new Cesium.GeometryInstance({
id: "PolygonGeometry",
geometry: new Cesium.PolygonGeometry({
polygonHierarchy: new Cesium.PolygonHierarchy(
Cesium.Cartesian3.fromDegreesArray([
-72.0, 40.0,
-70.0, 35.0,
-75.0, 30.0,
-70.0, 30.0,
-68.0, 40.0
])
)
}),
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.MaterialAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.BLUE
}),
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
九、 盒子
// 创建盒子几何实例
const instance = new Cesium.GeometryInstance({
id: "BoxGeometry",
geometry: new Cesium.BoxGeometry({
vertexFormat: Cesium.VertexFormat.POSITION_ONLY,
maximum: new Cesium.Cartesian3(250000.0, 250000.0, 250000.0),
minimum: new Cesium.Cartesian3(-250000.0, -250000.0, -250000.0)
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.AQUA)
},
modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-75.0, 40.0, 0.0)), // 立方体的位置和方向
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.PerInstanceColorAppearance({
flat: true,
translucent: false
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)

十、 球体
// 创建球形几何实例
const instance = new Cesium.GeometryInstance({
id: "SphereGeometry",
geometry: new Cesium.SphereGeometry({
radius: 1000.0,
vertexFormat: Cesium.VertexFormat.POSITION_ONLY
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED)
},
modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-75.0, 40.0, 1000)),
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.PerInstanceColorAppearance({
flat: true,
translucent: false
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)
// 定位到指定模型位置
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(-75.0, 40.0, 25000),
orientation: {
heading: Cesium.Math.toRadians(0),
pitch: Cesium.Math.toRadians(-90),
roll: 0
},
duration: 2.0 // 飞行动画的持续时间(单位是秒)
});

十一、 椭球体
// 创建椭球形几何实例
const instance = new Cesium.GeometryInstance({
id: "EllipsoidGeometry",
geometry: new Cesium.EllipsoidGeometry({
vertexFormat: Cesium.VertexFormat.POSITION_ONLY,
radii: new Cesium.Cartesian3(2000.0, 3000.0, 2000.0) // 椭球体在 x、y 和 z 方向上的半径
}),
attributes: {
color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED)
},
modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-75.0, 40.0, 2000)),
});
// 根据几何实例创建图元
const primitive = new Cesium.Primitive({
geometryInstances: instance, //可以是实例数组
appearance: new Cesium.PerInstanceColorAppearance({
flat: true,
translucent: false
})
});
// 将图元添加到集合
viewer.scene.primitives.add(primitive)

十二、 添加移除
var collection = new Cesium.PrimitiveCollection();
collection.add(primitive) // 将图元添加到集合
viewer.scene.primitives.add(collection) // 将集合添加到primitives
collection.remove(primitive) // 从集合中删除