首页 / 浏览问题 / 移动GIS / 问题详情
在一个activity里使用超图加载百度地图和高德地图
7EXP 2023年07月13日

加载地图代码:

if(null!=gaodeInfo){
    workspace.getDatasources().close(gaodeInfo.getAlias());
}
 gaodeInfo = new DatasourceConnectionInfo();
 //设置数据源别名
 gaodeInfo.setAlias("GaoDeSL");
 //设置引擎类型
 gaodeInfo.setEngineType(EngineType.GaoDeMaps);
 //设置地图服务地址(对接百度地图服务时,不设置该项也可打开,若服务地址变更,可在此处设置变更后的百度地图服务地址)
 String url = "https://map.gaode.com";
 gaodeInfo.setServer(url);
 //打开数据源
 Datasource datasource = workspace.getDatasources().open(gaodeInfo);
if (datasource != null) {
    layerShow = mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
}

第一次加载没问题,再加载百度地图也是这样操作。我需要来回切换,还需要怎么操作?现在切换两三次后,

mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
这行代码报错,闪退。
报错日志crash_recorder: getJavaCallStackImpl, @thread: 15189, 
        com.supermap.mapping.LayersNative.jni_AddLayer(Native Method)
        com.supermap.mapping.Layers.add(Layers.java:365)

1个回答

您好,看您的代码添加了图层到地图上,但是切换图层的代码是怎么写的呢,或者说切换图层的逻辑是怎么实现的呢,是改变图层顺序还是设置图层显隐实现的呢,还是使用的其他逻辑方法呢
3,740EXP 2023年07月13日

设置图层显示隐藏的实现是怎么实现?
是上面代码里的

layerShow 直接setVisible();吗?
我加载百度地图时也是用的上面的方法,只是serverurl更改了。
if(null!=baiduInfo){
    workspace.getDatasources().close(baiduInfo.getAlias());
}
baiduInfo = new DatasourceConnectionInfo();
//设置数据源别名
baiduInfo.setAlias("BaiDu");
//baiduInfo
baiduInfo.setEngineType(EngineType.BaiDu);
//设置地图服务地址(对接百度地图服务时,不设置该项也可打开,若服务地址变更,可在此处设置变更后的百度地图服务地址)
String url = "https://map.baidu.com";
baiduInfo.setServer(url);
//打开数据源
Datasource datasource = workspace.getDatasources().open(baiduInfo);
//添加数据集到地图窗口
if (datasource != null) {
    mapControl.getMap().close();
    mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
    mapControl.getMap().refresh();
}
您好,方法有二

1.使用layers图层管理类实现,具体方法是使用layers.moveToBottom(int index)/moveToTop(int index)将指定序号的图层移动到顶部/底部,或者用类似的layers.moveDown/moveTo/moveUp(int index)方法移动图层顺序完成

2.使用layer.setVisiable(boolean isview)设置图层隐藏/显示
方法1里的index是从哪儿获取?
我用方法2切换时,百度地图切换高德地图没问题,高德地图切换百度地图也没问题,但是百度地图切换天地图和高德地图切换天地图时就是空白怎么处理?天地图切回百度地图和高德地图就没问题。
1.从layer获取

2.注意坐标系位置不一样
...