首页 / 浏览问题 / 移动GIS / 问题详情
imobile 控制图层组透明度,对图层组中第一层图层无效
77EXP 2020年04月08日

1、imobile9D :912    小版本号不清楚了

2、imobile加载的本地工作空间,里面有地图和配的多幅专题图。

 显示地图后,将专题图使用 Map类中addLayersFromMap方法,将专题图叠加到底图上显示。 然后调节图层的透明度,先是获取到叠加的专题图所在的图层(*这个时候不管专题图是单图层 还是图层组,叠加后获取到的都是图层组)。 然后我把图层组遍历,获取到里面的图层信息。分别通过Layer类中的setOpaqueRate方法设置透明度。

   问题现象:如果获取到的图层组里面只有一个图层,那么这个方法调节透明度就没有效果。 如果获取到的图层组里面有多个图层,那么最上面的那个图层设置了没有效果,其他的遍历后设置了有效果。 虽然获取到的是图层组LayerGroup 继承的Layer, 但是直接使用layergroup.setOpaqueRate()方法,也没有任何效果

1个回答

您好,使用map.addLayersFromMap()方法将地图添加到当前地图中展示,它是用图层组的方式来管理添加的地图的比例尺的,所以添加进去的都是一个图层组。如果需要设置图层组的里面图层透明度,直接获取图层组里面的子图层设置透明度就行。图层组中的第一个图层序列号为0.参考代码如下:

9,137EXP 2020年04月09日

你好,我也是这样设置的  就是图层组里面获取的第一个图层设置了无效。。

//图层组
private void setLayerGroupAlpha(LayerGroup layerGroup, int alpha) {
    if (layerGroup != null) {
        for (int i = 0; i < layerGroup.getCount(); i++) {
            if (layerGroup.get(i) instanceof LayerGroup) {
                //图层组
                setLayerGroupAlpha((LayerGroup) layerGroup.get(i), alpha);
            } else {
                layerGroup.get(i).setOpaqueRate(alpha);
            }
        }
    }
}

你这边测试 如果没问题,能发一下jar包和对应的.so文件么

只需要:libarcore_sdk_c.so、libarcore_sdk_jni.so、libimb2d_v912.so、

com.supermap.data_v912.jar、com.supermap.mapping_v912.jar、com.supermap.services_v912.jar

我们使用的jar包和so库应该是一个版本,你可以检查一下你图层组的第一个图层是什么数据类型的图层
1、图层组里面只有一个图层的是 点数据集

2、图层组里面有多个的 第一个图层是文字信息

叠加的图层组

叠加的一个图层

您好,经过测试,如果图层中存在点图层或者文本图层,设置透明度无效。该方法为一个缺陷,我这边跟研发沟通一下,解决后第一时间回复您
...