首页 / 浏览问题 / 三维GIS / 问题详情
如何将三维场景加载到安卓移动端?
16EXP 2023年02月22日

我的联系方式:
245805325@qq.com

使用产品:supermap imobile 11i for android (V11.0.0),supermap idesktop 11i
电脑操作系统:win10 x64
手机操作系统:Android 12

问题详情:

    桌面端生成并打开了球面三维场景如下图。 使用的数据源放在下面百度网盘链接。

    尝试将三维场景生成缓存(纹理压缩选择了WebP方式)后在移动端加载。移动端可以成功加载示例数据,但换成自己生成的缓存数据会闪退。估计是生成缓存时哪里做的不对。

    想请问技术支持如何正确将我所使用的数据加载到移动端。

问题重现步骤:

桌面端数据生成:工作空间里打开数据源,在球面场景中打开数据。使用的udbx数据源上传至百度网盘链接:https://pan.baidu.com/s/1Z_QyN7Iyo8cumRqeNUFZXA?pwd=3333

移动端代码:使用的示例代码,仅更改了工作空间路径。调试,闪退发生在scene.open(sceneName)

1个回答

你好,本地测试生成的缓存数据可以正常打开

链接:https://pan.baidu.com/s/1QET0YQwG3OK1NyAW2F6kzQ
提取码:5789
3,405EXP 2023年02月22日

 

您好,我用这段代码打开您发的场景缓存,还是会在scene.open(sceneName)处闪退,无法分析出原因。代码除了工作空间路径、类型以外,都是示例程序的代码,且可以正确运行示例程序的缓存数据。

示例数据和自定义场景数据的部署路径如代码下的图片:


private void openSampleScene(){
        Button btnOpen = (Button)findViewById(R.id.btn_open);
        btnOpen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //打开工作空间
                Workspace workspace = new Workspace();
                WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
                info.setServer(sdcard+"/SuperMap/data/ok3/ok3.smwu");
                info.setType(WorkspaceType.SMWU);
                workspace.open(info);
                //场景显示控件与工作空间相关联
                SceneControl sceneControl = (SceneControl)findViewById(R.id.SceneControl);
                Scene scene = sceneControl.getScene();
                scene.setWorkspace(workspace);
                //打开场景
                String sceneName = workspace.getScenes().get(0);
                scene.open(sceneName);
//                scene.refresh();
            }
        });
    }

提供新包后打开正常
...