在supermap idesktop中对影像数据进行了缓存处理,使用iserver发布成三维服务加载到webgl 三维地球中发现影像周边出现了白边问题,在idesktop桌面端可以通过设置“图层属性”-> 设置透明度进行白边处理,那么在webgl代码中应该如何处理呢。在网上搜了好些文章,终于解决了这个问题,记录一下,希望能帮助到有需要的人。
代码如下处理:
//webgl中加载iserver的三维数据服务地址
let scene3d = viewer.scene.open('http://localhost:8090/iserver/services/3D-CRPH/rest/realspace');
//当为webgl全部加载三维数据完毕后,获取所有的三维图层对象
Cesium.when.all(scene3d,function(layers){
for(let i = 0; i < layers.length;i++){
//通过name==='Oc'来判断当前的图层是否为影像图层;'Za'代表三维模型图层;'zn'代表地形图层;
if(layers[i].constructor.name == 'Oc'){
//该两行代码为关键
layers[i].transparentBackColor = Cesium.Color.fromCssColorString('#FFFFFF');//设置影像透明的颜色,即影像中那种颜色设置为透明色,本文设置白色'#FFFFFF'为透明色,即消除白色
layers[i].transparentBackColorTolerance = Number(0.1);//设置影像透明颜色容限,这里设置0.1即可,该步骤必须存在,如果只设置影像透明颜色,不设置容限数值,不会起作用
}
}
})
设置以上代码后,重新运行代码,如下:
希望能够帮助有需要的朋友