点击查看:最新Cesium可视化系统实战视频课程
Cesium是一个强大的Web地球可视化框架,它提供了丰富的API来展示三维地理信息,并使得开发者可以在地图上标注、展示各种图形对象。在Cesium中,点(
Point
)是最常用的图形之一,用于在地图上标识一个位置、强调某些位置的特征。
1. 点的基本概念
在Cesium中,点是一个简单的地理对象,它是通过一个位置(经纬度和高度)来定义的。通常,点在地图上以小圆形或者其他图形的方式显示。你可以控制点的大小、颜色、透明度等属性,以实现不同的视觉效果。
2. 创建点对象
要在Cesium中添加一个点,你通常需要使用 viewer.entities.add
方法,该方法向视图中添加一个实体对象。每个实体都可以具有多个属性,其中包括点的位置、样式、标注等。下面是一个简化的示例:
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(114.07, 24.54, 100), // 点的位置
point: { // 定义点的样式
pixelSize: 20, // 点的像素大小
color: Cesium.Color.RED, // 点的颜色
outlineColor: Cesium.Color.BLACK, // 点的轮廓颜色
outlineWidth: 4 // 点的轮廓宽度
}
});
3. 点的位置
点的位置是通过 position
属性定义的,它可以是一个 Cartesian3
坐标系的坐标。在上面的例子中,Cesium.Cartesian3.fromDegrees(114.07, 24.54, 100)
将经纬度(114.07°E, 24.54°N)转换为 Cartesian3
坐标系的坐标,并且设置点的高度为100米。
4. 点的样式设置
点的外观可以通过 point
属性来配置。该属性是一个对象,它允许我们设置点的多种样式。
pixelSize
: 设置点的像素大小,默认情况下点的大小是固定的,可以通过调整此属性来改变点的可视大小。上面代码中设置为 20,表示点的大小为20像素。color
: 设置点的颜色,这里使用Cesium.Color.RED
来表示红色。你可以使用不同的Cesium.Color
颜色来改变点的颜色,例如Cesium.Color.GREEN
或Cesium.Color.BLUE
。outlineColor
: 设置点的轮廓颜色。轮廓颜色一般是点的外部边框的颜色,通常用于增加点的可视效果,在这段代码中设置为黑色Cesium.Color.BLACK
。outlineWidth
: 设置点的轮廓宽度。默认情况下,点没有轮廓,轮廓宽度可以设置为任何整数值,增加或减少边框的粗细度。
5. 通过相机视距动态调整点的大小
有时候你可能希望点的大小根据相机的距离进行动态调整。Cesium提供了一个 scaleByDistance
属性,利用 Cesium.NearFarScalar
类来实现这一效果。scaleByDistance
可以根据相机的距离来动态改变点的大小。
scaleByDistance: new Cesium.NearFarScalar(
1000, // 相机的最小距离
5, // 相机最小距离对应的点大小
1000000, // 相机的最大距离
1 // 相机最大距离对应的点大小
)
1000
和1000000
分别表示相机的最小和最大距离(单位:米)。5
和1
分别表示当相机距离为最小值和最大值时点的大小。
在相机靠近时,点的尺寸会较大;而当相机远离时,点的尺寸会变得更小。此功能非常适合在三维场景中根据相机视距来平衡性能和视觉效果。
6. 通过视距调整透明度
类似地,translucencyByDistance
属性允许我们根据相机与点之间的距离来调整点的透明度。通过 Cesium.NearFarScalar
类的设置,我们可以定义相机视距与透明度之间的映射关系。
translucencyByDistance: new Cesium.NearFarScalar(
1000, // 相机的最小距离
1, // 相机最小距离对应的透明度
1000000, // 相机的最大距离
0.1 // 相机最大距离对应的透明度
)
1
表示相机靠近时点的透明度为100%(完全不透明)。0.1
表示相机远离时,点的透明度会降低至10%,这使得点的可见性随着距离的增大而逐渐减弱。
这种特性非常有用,尤其是在密集的三维环境中,可以通过动态调整点的透明度来优化场景的清晰度和性能。
7. 完整代码示例
结合上述的所有属性,以下是一个完整的例子,展示了如何在Cesium中添加一个动态调整大小和透明度的点:
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(114.07, 24.54, 100), // 点的位置
point: { // 定义点的样式
pixelSize: 20, // 点的像素大小
color: Cesium.Color.RED, // 点的颜色
outlineColor: Cesium.Color.BLACK, // 点的轮廓颜色
outlineWidth: 4, // 点的轮廓宽度
scaleByDistance: new Cesium.NearFarScalar(
1000, // 最小距离
5, // 最小距离时的点大小
1000000, // 最大距离
1 // 最大距离时的点大小
),
translucencyByDistance: new Cesium.NearFarScalar(
1000, // 最小距离
1, // 最小距离时的透明度
1000000, // 最大距离
0.1 // 最大距离时的透明度
)
}
});
8. 总结
在Cesium中,点是一个非常基础且常用的三维地理对象。通过调整点的位置、样式和视距参数,可以实现非常丰富的可视化效果。特别是 scaleByDistance
和 translucencyByDistance
,它们可以根据相机的距离动态调整点的大小和透明度,使得你在复杂场景中能够更好地优化性能和用户体验。通过合理配置这些参数,你可以为用户提供一个更为直观且美观的地图界面。