14、PolylineVolume
Cesium中的PolylineVolume
是一种用于创建具有体积效果的折线图形的工具。想象一下,如果你想要在空中画出一条有厚度的管道或者隧道,PolylineVolume
可以帮助你实现这个效果。下面是PolylineVolume
的属性、方法及描述的表格表示:
属性
属性名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
show | Property|boolean | true | 指定体积的可见性。 |
positions | Property|Array. | 定义线条的Cartesian3 位置数组。 | |
shape | Property|Array. | 定义要拉伸的形状的Cartesian2 位置数组。 | |
cornerType | Property|CornerType | CornerType.ROUNDED | 指定拐角的样式。 |
granularity | Property|number | Cesium.Math.RADIANS_PER_DEGREE | 每个纬度和经度点之间的角度距离。 |
fill | Property|boolean | true | 指定是否用所提供的材料填充该体积。 |
material | MaterialProperty|Color | Color.WHITE | 指定用于填充体积的材料。 |
outline | Property|boolean | false | 指定是否概述体积。 |
outlineColor | Property|Color | Color.BLACK | 指定轮廓的颜色。 |
outlineWidth | Property|number | 1.0 | 指定轮廓的宽度。注意:在Windows平台上的所有主流浏览器都会忽略此属性。 |
shadows | Property|ShadowMode | ShadowMode.DISABLED | 指定体积是投射还是接收来自每个光源的阴影。 |
distanceDisplayCondition | Property|DistanceDisplayCondition | 指定将在距相机的距离处显示此体积。 |
方法
方法名称 | 参数 | 返回类型 | 描述 |
---|---|---|---|
clone | result: PolylineVolumeGraphics | PolylineVolumeGraphics | 复制此实例,将结果存储到提供的对象中,或者如果未提供则创建一个新实例。 |
merge | source: PolylineVolumeGraphics | void | 将此对象上每个未分配的属性分配给提供的源对象具有相同属性。 |
这些属性和方法可以帮助你控制体积折线的外观和行为,比如是否显示、填充颜色、轮廓、阴影等。通过使用这些属性和方法,可以在Cesium中创建出各种动态的体积折线效果,比如模拟空中的管道或者地面上的隧道。
代码:(详细注释)
// 定义一个名为addPolylineVolume的函数,它接受一个参数viewer,这个参数是一个Cesium Viewer实例
addPolylineVolume(viewer) {
// 定义一个名为computeCircle的函数,用于计算圆形的边界点
function computeCircle(radius) {
let positions = []; // 初始化一个数组来存储圆上的点
// 循环360次,每次增加1度,以生成圆上的点
for (let i = 0; i < 360; i++) {
let radians = Cesium.Math.toRadians(i); // 将角度转换为弧度
// 计算圆上的点的坐标,并将其添加到positions数组中
positions.push(
new Cesium.Cartesian2(
radius * Math.cos(radians), // 圆的x坐标
radius * Math.sin(radians) // 圆的y坐标
)
);
}
return positions; // 返回圆上的点的数组
}
// 使用viewer的entities.add方法添加一个新的实体到场景中
viewer.entities.add({
name: "polylineVolume", // 为实体设置一个名称,这里命名为"polylineVolume"
polylineVolume: { // 定义一个线体积(polylineVolume)图形的属性
positions: Cesium.Cartesian3.fromDegreesArray([
-85.0, 32.0, // 点1: 经度-85.0,纬度32.0
-85.0, 36.0, // 点2: 经度-85.0,纬度36.0
-89.0, 36.0, // 点3: 经度-89.0,纬度36.0
]), // 定义线体积路径上的点
shape: computeCircle(60000.0), // 调用computeCircle函数生成圆形边界点,半径为60000米
material: Cesium.Color.RED, // 设置线体积的材质,这里使用红色
},
});
// 使用viewer.zoomTo方法将视图缩放到新添加的实体,使其在视图中居中显示
viewer.zoomTo(viewer.entities);
}
这段代码创建了一个线体积实体,并将其添加到Cesium的3D场景中。线体积是由一系列点定义的路径,以及一个沿着这条路径拉伸的形状(在这个例子中是一个圆形)。computeCircle
函数用于生成圆形的边界点,这些点被用作线体积的形状。最后通过viewer.zoomTo
方法将视图调整到这个新添加的实体上。
15、Rectangle
Cesium中的Rectangle
是用于在地球上绘制矩形区域的一种方式。想象一下,如果你想要在一个地图上标记出一个矩形区域,比如一个湖泊或者一个城市的范围,Rectangle
就是用来干这个的。下面是Rectangle
的属性、方法及描述的表格表示:
属性
属性名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
coordinates | Property|Rectangle | 定义矩形的经纬度坐标,包括西、东、南、北边界。 | |
material | MaterialProperty|Color | Color.WHITE | 用于填充矩形的材料或颜色。 |
height | Property|number | 0 | 矩形相对于椭球体表面的高度。 |
extrudedHeight | Property|number | 挤出矩形相对于椭球体表面的高度。 | |
granularity | Property|number | Cesium.Math.RADIANS_PER_DEGREE | 用于确定每个纬度和经度点之间的角度距离。 |
fill | Property|boolean | true | 是否用提供的材料填充矩形。 |
outline | Property|boolean | false | 是否绘制矩形的轮廓线。 |
outlineColor | Property|Color | Color.BLACK | 轮廓线的颜色。 |
outlineWidth | Property|number | 1.0 | 轮廓线的宽度。注意:在Windows平台上的所有主流浏览器都会忽略此属性。 |
shadows | Property|ShadowMode | ShadowMode.DISABLED | 是否显示阴影,可以是禁用、仅接收或两者都有。 |
distanceDisplayCondition | Property|DistanceDisplayCondition | 指定矩形在距相机多远的距离内显示。 |
方法
方法名称 | 参数 | 返回类型 | 描述 |
---|---|---|---|
clone | result: RectangleGraphics | RectangleGraphics | 复制此实例,将结果存储到提供的对象中,或者如果未提供则创建一个新实例。 |
merge | source: RectangleGraphics | void | 将此对象上每个未分配的属性分配给提供的源对象具有相同属性。 |
这些属性和方法可以帮助你控制矩形区域的外观和行为,比如是否显示、填充颜色、轮廓、阴影等。通过使用这些属性和方法,可以在Cesium中创建出各种动态的矩形效果,比如表示地理区域或者规划区域。
代码::
这段代码是用于在Cesium中绘制一个半透明的红色矩形,并将其聚焦到视图中。矩形的四个角由经纬度坐标定义,材质设置为半透明的红色。
// 定义一个名为addRectangle的函数,它接受一个名为viewer的参数,这个参数通常是Cesium的Viewer实例。
addRectangle(viewer) {
// 在viewer的entities集合中添加一个新的实体。
viewer.entities.add({
// 给实体命名为"rectangle"。
name: "rectangle",
// 定义一个rectangle属性,它包含了绘制矩形的配置。
rectangle: {
// coordinates属性定义了矩形的四个角的经纬度坐标。
// 这里使用Cesium.Rectangle.fromDegrees方法创建一个矩形,坐标分别是:
// 西经110度到东经80度,北纬20度到北纬25度。
coordinates: Cesium.Rectangle.fromDegrees(
-110.0, // 西边界经度
20.0, // 南边界纬度
-80.0, // 东边界经度
25.0 // 北边界纬度
),
// material属性定义了矩形的材质,这里使用Cesium.Color.RED.withAlpha(0.5)设置为半透明的红色。
material: Cesium.Color.RED.withAlpha(0.5),
},
});
// 使用viewer.zoomTo方法将视图聚焦到刚刚添加的实体上。
viewer.zoomTo(viewer.entities);
}
16、Wall
Cesium中的Wall
用于创建一个沿着一系列点向下延伸至地面的墙体。下面是Wall
的属性、方法及描述的表格表示:
属性
属性名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
show | Property|boolean | true | 指定墙体的可见性。 |
positions | Property|Array. | 定义墙体顶部的Cartesian3 位置数组。 | |
minimumHeights | Property|Array. | 定义墙体底部的高度数组,相对于地球表面。 | |
maximumHeights | Property|Array. | 定义墙体顶部的高度数组,而不是每个位置的高度。 | |
granularity | Property|number | Cesium.Math.RADIANS_PER_DEGREE | 每个纬度和经度点之间的角距离。 |
fill | Property|boolean | true | 指定墙体是否填充了所提供的材料。 |
material | MaterialProperty|Color | Color.WHITE | 指定用于填充墙体的材料。 |
outline | Property|boolean | false | 指定是否勾勒出墙体的轮廓。 |
outlineColor | Property|Color | Color.BLACK | 指定轮廓的颜色。 |
outlineWidth | Property|number | 1.0 | 指定轮廓的宽度。 |
shadows | Property|ShadowMode | ShadowMode.DISABLED | 指定墙体是否投射或接收来自光源的阴影。 |
distanceDisplayCondition | Property|DistanceDisplayCondition | 指定墙体在距相机多远的距离内显示。 |
方法
方法名称 | 参数 | 返回类型 | 描述 |
---|---|---|---|
clone | result: WallGraphics | WallGraphics | 复制此实例,将结果存储到提供的对象中,或者如果未提供则创建一个新实例。 |
merge | source: WallGraphics | void | 将此对象上每个未分配的属性分配给提供的源对象具有相同属性。 |
这些属性和方法可以帮助你控制墙体的外观和行为,比如是否显示墙体、墙体的颜色和轮廓、以及墙体在何时可见等。通过使用这些属性和方法,可以在Cesium中创建出各种动态的墙体效果,比如建筑物的外墙或者隔离墙。
代码:
这段代码是用于在Cesium中绘制一个带有锯齿状高度和轮廓线的蓝色墙体,并将其聚焦到视图中。墙体由一系列沿着同一纬度线的点组成,每个点都有最小和最大高度,形成锯齿状的效果。墙体的材质设置为半透明的蓝色,并且有黑色的轮廓线。
// 定义一个名为addWall的函数,它接受一个名为viewer的参数,这个参数通常是Cesium的Viewer实例。
addWall(viewer) {
// 在viewer的entities集合中添加一个新的实体。
viewer.entities.add({
// 给实体命名为"Blue wall with sawtooth heights and outline"。
name: "Blue wall with sawtooth heights and outline",
// 定义一个wall属性,它包含了绘制墙体的配置。
wall: {
// positions属性定义了墙体上各点的坐标,这里使用Cesium.Cartesian3.fromDegreesArray方法
// 将经纬度坐标转换成Cesium内部使用的笛卡尔坐标系。墙体是沿着纬度50.0度的一系列点。
positions: Cesium.Cartesian3.fromDegreesArray([
-115.0, 50.0,
-112.5, 50.0,
-110.0, 50.0,
-107.5, 50.0,
-105.0, 50.0,
-102.5, 50.0,
-100.0, 50.0,
-97.5, 50.0,
-95.0, 50.0,
-92.5, 50.0,
-90.0, 50.0,
]),
// maximumHeights属性定义了墙体上各点的最大高度,这里设置了一个交替的高低模式。
maximumHeights: [ // 设定每个点的最大高度
100000,
200000,
100000,
200000,
100000,
200000,
100000,
200000,
100000,
200000,
100000,
],
// minimumHeights属性定义了墙体上各点的最小高度,这里设置了一个交替的模式,从地面开始。
minimumHeights: [// 设定每个点的最小高度
0,
100000,
0,
100000,
0,
100000,
0,
100000,
0,
100000,
0,
],
// material属性定义了墙体的材质,这里使用Cesium.Color.BLUE.withAlpha(0.5)设置为半透明的蓝色。
material: Cesium.Color.BLUE.withAlpha(0.5),
// outline属性设置为true,表示墙体有轮廓线。
outline: true,
// outlineColor属性定义了轮廓线的颜色,这里设置为黑色。
outlineColor: Cesium.Color.BLACK,
},
});
// 使用viewer.zoomTo方法将视图聚焦到刚刚添加的实体上。
viewer.zoomTo(viewer.entities);
}
博客:
https://blog.csdn.net/weixin_44857463/article/details/129157708
B站:
https://space.bilibili.com/610654927?spm_id_from=..0.0