首页 / 浏览问题 / 移动GIS / 问题详情
SuperMap Android 动态修改图层颜色
66EXP 2020年10月26日
我导入一个或多个shp图层文件,通过rgba设置图层颜色和透明度,这是一次性的。;;;请问有动态设置颜色的方法吗?就是图层加载完了,想动态修改图层颜色

1个回答

您好,修改图层的颜色是指设置图层的对象显示风格吗?可以通过设置图层风格layer.setAdditionalSetting(LayerSetting layerSetting)或者对图层设置专题图,可以使用单值专题图、分段专题图。具体代码可以参考帮助文档

9,232EXP 2020年10月26日

我通过这种方法动态改了transparency图层透明度。可是setLineColor的线颜色没有变化,线没有透明度吗?

线对象一般不会去设置图层的透明度的, 你可以把线对象颜色设置浅一点,本身线对象也不会遮盖其他图层

谢谢,那我就设置浅颜色吧,还有个问题请教一下,天地图的影像和中文标注是分开的,这个方法只能加载一种,怎么能把影像和中文标注合起来显示呢?

DatasourceConnectionInfo dcInfo = new DatasourceConnectionInfo();
//数据源别名
dcInfo.setAlias("TianDiTu1");
dcInfo.setEngineType(EngineType.OGC);
dcInfo.setDriver("WMTS");
String url = "http://t0.tianditu.gov.cn/img_c/wmts?tk=fc549a8d2da7d6dec0f0511ee3456c8&DPI=96";
String url2 = "http://t0.tianditu.gov.cn/cia_c/wmts?tk=fc549a8d2da7d6dec0f0511ee3456c8&DPI=96";
dcInfo.setServer(url);
//打开数据源// roadmap//  satellite-影像// terrain-地形// hybrid-地名
Datasource datasource = workspace.getDatasources().open(dcInfo);
Dataset dasetvalue = datasource.getDatasets().get(0);
map.getLayers().add(dasetvalue, false);
你用两个数据源连接信息去分别打开注记和影像数据源,再把这两个数据集添加到地图叠加显示
写了两个DatasourceConnectionInfo,只显示影像地图,中文标注没出来呀,也没报错
写了两个你需要打开两个数据源,然后把数据源的数据集添加到地图上,你那边可以调试一下代码看数据源是否都打开成功,并且都成功添加到地图中
天地图中文标注open打开失败了,这是为什么呢,提示为空,参数都给了
自己看一下参数哪有问题,正常情况是可以打开的,你的driver写的有问题,driver设置是一样的,直接写WMTS
现在不报错误了,但是只显示影像图,不显示中文标注,是被覆盖了吗?
//初始化天地图卫星图
public void initTiandituSatelliteMap() {
    //显示天地图影像
    DatasourceConnectionInfo dcInfo = new DatasourceConnectionInfo();
    //数据源别名
    dcInfo.setAlias("ImgTianDiTu");
    dcInfo.setEngineType(EngineType.OGC);
    dcInfo.setDriver("WMTS");
    String url = "http://t0.tianditu.gov.cn/img_c/wmts?tk=fc549a8d2da7d6dec0f0511ee3456c81&DPI=96";
    dcInfo.setServer(url);
    //打开数据源// roadmap//  satellite-影像// terrain-地形// hybrid-地名
    Datasource datasource = workspace.getDatasources().open(dcInfo);
    Dataset dasetvalue = datasource.getDatasets().get(0);
    map.getLayers().add(dasetvalue, false);

    //显示天地图中文标注
    DatasourceConnectionInfo dcInfo2 = new DatasourceConnectionInfo();
    //数据源别名
    dcInfo2.setAlias("CiaTianDiTu");
    dcInfo2.setEngineType(EngineType.OGC);
    dcInfo2.setDriver("WMTS");
    String url2 = "http://t0.tianditu.gov.cn/cia_c/wmts?tk=fc549a8d2da7d6dec0f0511ee3456c81&DPI=96";
    dcInfo2.setServer(url2);
    //打开数据源// roadmap//  satellite-影像// terrain-地形// hybrid-地名
    Datasource datasource2 = workspace.getDatasources().open(dcInfo2);
    Dataset dasetvalue2 = datasource2.getDatasets().get(0);
    map.getLayers().add(dasetvalue2, false);
}
你添加注记的时候设置第二个参数为true,让注记图层显示在最上层

找到api了,原来是这个意思

//用于把一个数据集添加到此图层集合作为一个普通图层显示,即创建一个普通图层。其风格由系统默认设置。
//一参:dataset - 要添加到图层的数据集。 二参:addToHead - 指定新创建图层是否放在图层集合的最上面一层。当设置为 false 时,则将此新创建图层放在最底层。

我把这两个数据源调换一下加载位置就好了,把影像放到最底下了。谢谢帮助
...