这样写 你自己把代码跑起来能打开吗????
您好,该文档没有更新,已经联系产品团队修改,感谢您的指正;还有要打开在线场景需要用iserver发布三维服务再访问,地址格式和如下例子相同:https://iserver.supermap.io/iserver/services/3D-CBD/rest/realspace/scenes/CBD
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就是打开本地场景的
按照这样也打不开,,,,,,,,,
安装目录\SampleData\CBD\192_168_1_111_8090_iserver_services_realspace-CBD
建议下载示例代码与数据,直接运行示例代码,http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id=2347,其中android_CBD即为对应的数据
1.截图中使用的是iMobile打开离线场景,该url是通过代码下载场景生成的结果文件夹名称,而非产品问题
2.打开场景报错Layer3DVectorNative是由于添加了libAutoCAD.so导致的,删除该库即可