背景介绍:
通过下述代码往地图上添加小圆点
备注:此时没有加载地形
viewer.scene.globe.depthTestAgainstTerrain = true;
let colPoint = viewer.scene.primitives.add(
new Cesium.PointPrimitiveCollection({
scene: viewer.scene
})
);
let position = Cesium.Cartesian3.fromDegrees(x, y, 0);
let point = colPoint.add({
position: position,
pixelSize: 5,
color: color,
show: true
});
问题:
小圆点只有一半在地上,一半在地下
方案1:关闭深度检测(圆点自身的)
使用disableDepthTestDistance: Number.POSITIVE_INFINITY,
圆点完全都在地上了
存在问题:
图中间的小圆点实际在建筑的后面,但是,还是却显示在建筑的前面
这是关闭深度检测的必然结果!
方案2:抬升高度
下述语句中输入高度值
let position = Cesium.Cartesian3.fromDegrees(x, y, 10);
相关解释:
position中的10,代表圆点的高度,单位是“米”(从圆点的中心抬高10米)
pixelSize中的5,代表圆点的像素大小,单位是“像素”(5代表直径?)
圆不被遮挡的条件:只有position中的高度,比pixelSize换算成米的数值大
在不同的camera高度下,一个像素代表的实际高度(单位为米),是不一样的
camera越高,一个像素换算成米,就越大
camera越低,一个像素换算成米,就越小
存在问题:
position中的height比较小:camera高的时候,小圆点还是有可能有一部分在地球下面
position中的height比较大:camera低的时候,点会显得离地面很远
方案3:关闭深度检测(系统整体的)
执行下述代码,关闭深度检测
viewer.scene.globe.depthTestAgainstTerrain = false;
这个完美解决了,那么关闭系统整体的深度检测会导致哪些问题呢?
请教别人,他说会导致一个问题:地下的物体会被看到。
总结:
上述3种方案都有问题,至此还没有找到我满意的解决方案