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
相关产品推荐
相关产品推荐

