首页 / 浏览问题 / 移动GIS / 问题详情
android端三维地图展示及导航问题
1EXP 2022年05月18日
android端使用com.supermap.realspace.SceneView进行三维地图展示及导航时,报android.view.InflateException:Error inflating class com.supermap.realspace.SceneView,引入了com.supermap.realspace_v1021,data,mapping及libimb_v1021.so,在编译的apk包classes.dex也能查看到SceneView,之前使用SceneControl进行三维展示是没有问题。

使用的是imobile:1021,32位版本

1个回答

您好。使用三维场景需要用SceneControl类而不是SceneView类哈
9,197EXP 2022年05月18日

导航需要使用Navigation3D,这个好像关联SceneView,在SceneControl没有
 

mNavigation3D = mSceneView.getNavigation();

mScene = mSceneControl.getScene();
mScene.setWorkspace(mWorkspace);

// 打开工作空间中地图的第2幅地图
String mapName = mWorkspace.getScenes().get(0);
mScene.open(mapName);

mFloorListView3D.setVisibility(View.VISIBLE);
mFloorListView3D.setNavigation3D(mNavigation3D);
mFloorListView3D.linkScenepControl(mSceneControl, mWorkspace);
不是这么使用的哈,可以实例化一个navigation3D,然后通过setSceneControl与场景控件关联。可以参考以下代码:

  m_navigation3D = new Navigation3D(Indoor3D.this);        //获取导航模块
                m_sceneControl.setNavigationControlVisible(true);    //设置导航条可见

                //初始化FloorList
                m_floorListView3D = (FloorListView3D)findViewById(R.id.floor_list_view_3d);
                m_floorListView3D.setVisibility(View.VISIBLE);
                m_floorListView3D.linkScenepControl(m_sceneControl, m_workspace);
                m_floorListView3D.setNavigation3D(m_navigation3D);
                //设置室内地图所在的数据源
                m_navigation3D.setDatasource(m_workspace.getDatasources().get("beijingMall"));
                //设置三场景控件
                m_navigation3D.setSceneControl(m_sceneControl);
这样确实可以,但是使用Navigation3D导航时,调用mNavigation3D.setStartPoint方法时,总是出现卡死现象,没有明显报错的日志,Point3D三维数据都是有值的,使用的事CBD_android的数据,我这里没有三维室内导航,就是纯粹的三维导航,所以没有用到floorListView3D,Navigation3
您设置的坐标是长按选择的还是直接写死的坐标呢?可以运行下这个demo看会不会卡死。
链接:https://pan.baidu.com/s/1AkSkQG8rXcIZv51Ydkdp2g?pwd=6655
提取码:6655
长按,日志显示获取到了三维坐标

这个demo可以运行导航,
必须调用下面代码,

m_navigation3D.setDatasource(m_workspace.getDatasources().get("beijingMall"));

如果使用CBD_android的数据,怎么设置室内地图所在的数据源?

您好,这个是需要有三维网络数据集的,您可以看我发给你的网盘里面的数据。需要打开本地的数据源,该数据源里面存有三维网络数据集
...