首页 / 浏览问题 / 移动GIS / 问题详情
地图切换出现了问题
58EXP 2023年02月14日
您好,我按照这个思路进行操作发生了一个事情,就是我点击影像地图的时候正常的,但是点击电子地图按钮时,两个图层都会显示:
下面是代码,以及图片:

//默认3d天地图
tiandidsInfo = new DatasourceConnectionInfo();
Log.d(ContentName.TAG,"使用server");
tiandidsInfo.setServer(TIANDI_URL);
tiandidsInfo.setEngineType(EngineType.OGC); 
tiandidsInfo.setAlias("tiandi");
tiandidsInfo.setDriver("WMTS");

tiandids = m_woWorkspace.getDatasources().open(tiandidsInfo);
//纬度地图
tiandidsInfo2D = new DatasourceConnectionInfo();
Log.d(ContentName.TAG,"使用server"); 
tiandidsInfo2D.setServer(TIANDI_URL_2d);
tiandidsInfo2D.setEngineType(EngineType.OGC);
 tiandidsInfo2D.setAlias("tiandiPlane");
tiandidsInfo2D.setDriver("WMTS");
tiandidsPlane = m_woWorkspace.getDatasources().open(tiandidsInfo2D);
m_mapControl.enableRotateTouch(true);
if (tiandids != null && tiandidsPlane !=null) {
    m_mapControl.getMap().getLayers().add(tiandids.getDatasets().get(0), true);
    m_mapControl.getMap().getLayers().add(tiandidsPlane.getDatasets().get(0), true);
}
// 0 是电子地图  1 是影像地图
m_mapControl.getMap().getLayers().get(0).setVisible(false);
m_mapControl.getMap().viewEntire();

下面是onClicked函数当中的操作

case R.id.btn_main_imgMap://影像地图--默认地图
    m_mapControl.getMap().getLayers().get(1).setVisible(false);
    m_mapControl.getMap().getLayers().get(0).setVisible(true);
    m_mapControl.getMap().viewEntire();
    m_mapControl.getMap().setScale(1 / 7984.375);
    m_mapControl.getMap().refresh();
    break;
case R.id.btn_main_eleMap://电子地图
    m_mapControl.getMap().getLayers().get(1).setVisible(true);
    m_mapControl.getMap().getLayers().get(0).setVisible(false);
    m_mapControl.getMap().viewEntire();
    m_mapControl.getMap().setScale(1 / 7984.375);
    m_mapControl.getMap().refresh();
    break;

图片:

图1 点击电子地图按钮后出现两个图层交替

图2 正常 (点击影像地图正常)

问题关闭原因: 可以解决

1个回答

您好,其实逻辑只需要一个按钮加逻辑判断即可实现,

先把两张地图添加到map中,接着只切换最上层地图的显隐即可,代码如下

boolean flag = true;

             if (flag == true){
               mapControl.getMap().getLayers().get(0).setVisible(false);
               mapControl.getMap().refresh();
               flag = false;
            }else {

               mapControl.getMap().getLayers().get(0).setVisible(true);
               mapControl.getMap().refresh();
               flag = true;
3,470EXP 2023年02月14日
...