首页 / 浏览问题 / 移动GIS / 问题详情
请提供一个打开文件中第二幅地图的方法
6EXP 2023年09月12日
 @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); //更改顶部状态栏颜色
        requestPermissions();
        MapControl mapControl = null;

        String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();

        //设置许可文件路径(默认路径“/SuperMap/license/”)
        Environment.setLicensePath(rootPath + "/SuperMap/license10i/");

        //组件功能必须在Environment初始化之后才能调用
        Environment.initialization(this);

        setContentView(R.layout.activity_map);

        //打开工作空间
        Workspace m_workspace = new Workspace();
        WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
        info.setServer(rootPath + "/SuperMap/GeometryInfo/YangtzeU.smwu");
        info.setType(WorkspaceType.SMWU);
        m_workspace.open(info);

        //将地图显示控件和工作空间关联
        MapView m_mapView = findViewById(R.id.Map_view);
        mapControl = m_mapView.getMapControl();
        mapControl.getMap().setWorkspace(m_workspace);

        MapControl mapControl2 = mapControl;

        //打开工作空间中的第一幅地图
        String mapName = m_workspace.getMaps().get(0);
        String mapName2 = m_workspace.getMaps().get(1);   //打开第二幅地图
        mapControl.getMap().open(mapName);
        mapControl.getMap().refresh();

        Button bycle = findViewById(R.id.bycle_button);
        //MapControl finalMapControl = mapControl;
        //MapControl finalMapControl1 = mapControl;
        bycle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mapControl2.getMap().open(mapName2);
                mapControl2.getMap().refresh();

                //openMap();   //切换到第二幅地图
            }
        });
    }

以上是我代码的一部分

现在的问题是可以在手机端已经可以打开第一幅地图,但是点击button切换到同一文件中的第二幅地图时,会先显示第二幅地图,然后闪退重新加载整个app

此外,一个文件中有多幅地图,如何获得指定地图中的图层

1个回答

您好,应该用map.close关闭当前地图再打开其他地图
3,690EXP 2023年09月12日
bycle.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mapControl.getMap().close();   //关闭第一幅地图
        mapControl.getMap().open(mapName2);
        mapControl.getMap().refresh();

        //openMap();   //切换到第二幅地图
    }
});

这是我加上map.close后的代码,依然会短暂的打开第二幅地图后闪退

您好,排查了一下发现似乎不是代码的问题,是第二幅地图本身存在问题导致闪退,但是我在桌面端打开检查了一下没发现第二幅地图有什么问题,没有缺少要素类,两幅地图的投影也是一致的,请问还有什么导致闪退的可能吗,麻烦了

闪退的原因似乎是因为图上的停车符号,将这个数据集从地图上移除后就不闪退了,请问这个是什么bug吗,如果我需要这些符号的话应该怎么做呢(停车符号是桌面端自带的彩色svg符号)

远程查看后,是查询逻辑导致空指针异常而崩溃,与产品无关
改变查询逻辑解决的是另一个闪退问题,地图加入svg符号就闪退的问题没有被解决。
客户使用符号为 根组/城市/彩色_svg 编号为334的停车场符号,使用的版本为11i 2022 4月的版本,需要更新版本,新版本修复了svg符号打开崩溃问题
...