You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cesium中如何实现广告牌被地形遮挡时隐藏?

Cesium中如何实现广告牌被地形遮挡时隐藏?

嘿,这个问题我之前也踩过坑!Cesium 默认情况下,广告牌(Billboard)不会和地形做深度碰撞检测,所以就算地形挡在前面,广告牌还是会“穿透”显示出来。不过解决起来超简单,只需要给你的 Billboard 配置加一个关键属性就行。

你只需要在 billboard 的配置项里添加 depthTestAgainstTerrain: true,开启地形深度测试。修改后的代码如下:

map3d.entities.add({
    position: Cesium.Cartesian3.fromDegrees(_latlng[0], _latlng[1], 0),
    billboard: {
        image: "./img/map/icon/zzw.png",
        width: 40,
        height: 40,
        pixelOffset: new Cesium.Cartesian2(0, 0),
        verticalOrigin: Cesium.VerticalOrigin.CENTER, // 这里帮你补全了之前写漏的部分
        depthTestAgainstTerrain: true // 核心就是这一行!
    }
});

加上这个属性后,Cesium 就会自动判断广告牌是否被地形遮挡,一旦被挡住就会自动隐藏啦。另外顺带提一句,如果之后遇到标签(Label)这类实体也出现穿透地形的情况,同样可以给对应的实体配置加上这个属性解决。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 12:25:32