首页 / 浏览问题 / WebGIS / 问题详情
如何根据构件smId设置构件透明度,但是不改变原有颜色
55EXP 2024年07月23日
如题,目前找到的几种方式:

window.layer.style3D.fillForeColor = new SuperMap3D.Color(1.0, 1.0, 1.0, 0.2);

这种只能在图层层次设置透明度

var color = new SuperMap3D.Color(1.0,1.0,1.0,0.5);

window.layer.setObjsColor([smId], color);

这种会改变原有颜色,比如上面的设置就会变成白色。

我想要根据smId,设置单个构件的透明度,同时不改变原有颜色,可以通过设置透明度重新变成原来的样式。

希望能帮忙解答。

1个回答

您好,可以先使用getObjsColor()获取到对应的颜色,然后修改该颜色的透明值,再使用setObjsColor()赋给对应的模型构件

希望可以帮助您
1,335EXP 2024年07月24日
getObjsColor()方法怎么用,我试着用window.layer.getObjsColor([smId]);来获取颜色,但是得到的是undefined。

另外,这些方法有没有在API里面有收录,有API获取途径吗。

您的图层是S3m图层吗?可以参考这个api来操作https://www.supermapol.com/webgl/docs/Documentation/S3MTilesLayer.html?classFilter=s3m

是S3m图层,发布前我生成了S3M缓存切片的。但是,目前我用removeObjsColor可以把set的颜色变回原样。那透明的时候颜色不变也不强求了。

感谢你的解答
...