首页 / 浏览问题 / 移动GIS / 问题详情
移动三维加载
18EXP 2023年04月03日

这样写  你自己把代码跑起来能打开吗????

2 个回答

您好,该文档没有更新,已经联系产品团队修改,感谢您的指正;还有要打开在线场景需要用iserver发布三维服务再访问,地址格式和如下例子相同:https://iserver.supermap.io/iserver/services/3D-CBD/rest/realspace/scenes/CBD

3,690EXP 2023年04月03日
 String url2 = "https://iserver.supermap.io/iserver/services/3D-CBD/rest/realspace/scenes/CBD/layers";

    // 在线三维场景名
    String sceneName = "CBD";
    private String rootPath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获取运行环境的绝对路径
        rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
        //设置许可路径,注意Environment是超图的接口, StringKey.LICENSE_REA_PATH为许可存放目录,下文会说到
        Environment.setLicensePath(rootPath + "/SuperMap/license/");
        Environment.initialization(this);
        setContentView(R.layout.activity_main);


        //获取场景控件
        m_sceneControl = (SceneControl) findViewById(R.id.SceneControl);
        Button m_btnOpen = findViewById(R.id.btn_open);
        m_btnOpen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取Scene
                com.supermap.realspace.Scene scene = m_sceneControl.getScene();

                Layer3D add = scene.getLayers().add(url2, Layer3DType.OSGBFILE, "Tree@CBD", true);
                Log.e("TAG", "onClick: --通过已知的场景名称打开场景-----------");
            }
        });
    }

请看下 为何这样打开 得到的 Layer3D add 对象 是null

移动端支持的模型缓存纹理压缩格式为webp/KTX2.0,而官网服务上的模型缓存不是这两种的,看您是想访问离线场景,可以用scene.open(sceneName),更多的相关代码您可以下载范例程序(http://download.supermap.com.cn/2022/SuperMap_11i_2022_SP1/iMobile/supermap-imobile-11.0.1-232-android-zip-chs_(%E7%A4%BA%E8%8C%83%E4%BB%A3%E7%A0%81%E4%B8%8E%E7%A4%BA%E8%8C%83%E6%95%B0%E6%8D%AE).zip),里面的openlocaldata就是打开本地场景的

我按照openlocaldata的代码编写,,发现点击打开三维  还是在报错

 java.lang.UnsatisfiedLinkError: No implementation found for long com.supermap.realspace.Layer3DVectorNative.jni_GetFieldInfos(long) (tried Java_com_supermap_realspace_Layer3DVectorNative_jni_1GetFieldInfos and Java_com_supermap_realspace_Layer3DVectorNative_jni_1GetFieldInfos__J)
        at com.supermap.realspace.Layer3DVectorNative.jni_GetFieldInfos(Native Method)
        at com.supermap.realspace.Layer3D.<init>(Layer3D.java:45)
        at com.supermap.realspace.Layer3DImageFile.<init>(Layer3DImageFile.java:9)
        at com.supermap.realspace.Layer3D.createInstance(Layer3D.java:371)
        at com.supermap.realspace.Layer3Ds.resetLayer3DsArr(Layer3Ds.java:59)
        at com.supermap.realspace.Layer3Ds.<init>(Layer3Ds.java:43)
        at com.supermap.realspace.Layer3Ds.createInstance(Layer3Ds.java:134)
        at com.supermap.realspace.Scene.getLayers(Scene.java:281)
        at com.supermap.realspace.Scene.fromXML(Scene.java:458)
        at com.supermap.realspace.Scene$1.run(Scene.java:507)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:192)
        at com.supermap.realspace.SceneControl$RenderThread.run(SceneControl.java:731)
看着是链接错误,这是您看下这份工程

链接:https://pan.baidu.com/s/1iLGU6_X1JzC6HCIYwfDgJg
提取码:5789
--来自百度网盘超级会员V3的分享

按照这样也打不开,,,,,,,,,

安装目录\SampleData\CBD\192_168_1_111_8090_iserver_services_realspace-CBD

18EXP 2023年04月03日
我去还能这么写?有没有可能,它只是个url。。。。
不是  他这个URL 是要放在指定的地点下使用,,,这样实例代码. 用户完全看不懂啊  我们会浪费很多时间查证资料

建议下载示例代码与数据,直接运行示例代码,http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id=2347,其中android_CBD即为对应的数据

1.截图中使用的是iMobile打开离线场景,该url是通过代码下载场景生成的结果文件夹名称,而非产品问题

2.打开场景报错Layer3DVectorNative是由于添加了libAutoCAD.so导致的,删除该库即可

...