美文网首页开源
CESIUM 点只显示一半

CESIUM 点只显示一半

作者: 吟风者 | 来源:发表于2021-11-01 19:27 被阅读0次

    CESIUM 点只显示一半

    问题:

    小圆点只有一半在地上,一半在地下

    image-20211101150304020

    背景介绍:
    通过下述代码往地图上添加小圆点
    备注:此时没有加载地形

     //创建点
    createPoint(cartesian) {
        let $this = this;
        let point = this.viewer.entities.add({
            position: cartesian,
            point: {
                pixelSize: 10,
                color: $this.Cesium.Color.YELLOW,
            }
        });
        $this._entities_point.push(point);
        return point;
    }
    

    方案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;

    相关文章

      网友评论

        本文标题:CESIUM 点只显示一半

        本文链接:https://www.haomeiwen.com/subject/ifhtzltx.html