深度检测
1、开启深度检测
// 开启深度检测,默认是关闭的
viewer.scene.globe.depthTestAgainstTerrain = true;
2、不开启的后果
-
地球上的 entity 会 强制绘制、显示 出来而不管是否有遮盖,导致少量位移误差
-
Cesium 拾取鼠标坐标不准
- scene.pickPosition:有地形数据时,这结果不太准确,需要开启 深度检测
- globe.pick:准确度较高
这会导致:用鼠标绘制点、线、面 的时候根本拾取不到正确的坐标,导致坐标点严重漂移
3、开启的坏处
开启后,任何实体的渲染都会严格按照深度来绘制
这会导致:
- entity 【点】实体会有一半隐藏在地下
目前无法解决,只能使用 【Billboard】替代点的图标
- entity 【线】会穿过地表
viewer.entities.add({
polyline: {
positions: Cesium.Cartesian3.fromDegreesArray([-75, 37, -125, 37]),
//Cesium.Cartesian3.fromDegreesArrayHeights([-75,39,250000,-125,39,250000,])
//clampToGround: true,
width: 3,
},
});
如果线的位置为:【经度,纬度】时,显示正常。
但如果 关闭深度检测 数据源为【经度、纬度、高度】,会导致线漂浮在空中。
entity.polyline.clampToGround=true
- polygon
多边形符合地球的曲率,并且可以被放置在表面上或在高度和可任选地被挤压成的体积。
viewer.entities.add({
polygon: {
hierarchy: positionData,
// 不设置高度,则为贴地
// height:1000,
material: new Cesium.ColorMaterialProperty(
Cesium.Color.WHITE.withAlpha(0.7)
),
},
});