移动端中弹框显示模型属性信息的实现方案
来源:互联网 发布:linux的gcc编译器 编辑:程序博客网 时间:2024/06/08 14:29
作者:xinxin
在SuperMap iMobile for Android的场景中加载模型数据只能加载场景缓存,如果想获取场景中的模型数据的属性信息,直接对场景缓存数据无法获取,下面小编给大家分享一下移动端弹框显示模型属性信息的具体实现方案。该功能的实现主要有两个步骤:数据准备和功能开发。
1、 数据准备
(1) 切场景缓存
在iDesktop中将CAD模型数据集添加到场景中,保存场景,然后切场景缓存,缓存类型选“OSGB”,缓存用途选“Android系列设备”,如下图:
如果用iDesktop 9D切缓存时已进行了纹理压缩,用9D以前的版本切完场景缓存后还需要进行压缩纹理,如下图:
(2) 数据拷贝
步骤(1)中切完场景缓存会得到一个.sxwu的工作空间,在iDesktop中打开这个工作空间,并在该工作空间中打开含有(1)中的CAD模型数据集的数据源(建议将该数据源拷贝到切的场景缓存文件中再打开),然后将整个场景缓存文件和数据源拷贝到移动设备上待用。
2、 功能开发
(1) 加载场景
先打开拷贝到移动设备上的工作空间数据,打开里面的场景缓存,关键代码如下:
workspace = new Workspace();WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();info.setServer(sdcard + "/SampleData/wgx/BuildingAndroid/BuildingAndroid.sxwu"); info.setType(WorkspaceType.SXWU);if (workspace.open(info)) {System.out.println("工作空间打开成功!");}
(2) 选中模型高亮
加载完场景缓存后通过手指触屏选中对象,并设置选中对象高亮显示风格,关键代码如下:
Layer3D layer3d = layer3Ds.get(i);//图层选中对象Selection3D selection3d = layer3d.getSelection();//设置选中对象的显示风格GeoStyle3D selectStyle3d = new GeoStyle3D();Color color = new Color(255, 0, 0);selectStyle3d.setFillForeColor(color);selection3d.setStyle(selectStyle3d);
(3) 获取选中模型的属性
得到选中模型对象Selection3D后,可以获取该对象所在图层中的ID,然后通过ID在这个图层对应的CAD模型数据集中获取到这个模型对象,最后在这个数据集对应的记录集中获取这个模型对象的属性信息,关键代码如下:
if (selection3d.getCount()>0) { //选中对象的ID int ID = selection3d.get(0); queryInfoBubble.m_QueryInfoData.clear(); //获取选中对象图层对应的数据源和矢量数据集 String layerName = layer3d.getName(); String[] dataNames = layerName.split("@"); String datasetName = dataNames[0]; String datasourceName = dataNames[1]; Datasource datasource = workspace.getDatasources().get(datasourceName); if (datasource!=null) { DatasetVector datasetVector = (DatasetVector)datasource.getDatasets().get(datasetName); if (datasetVector!=null) { String filter = "SMID = '" + ID + "'"; QueryParameter parameter = new QueryParameter(); parameter.setAttributeFilter(filter); parameter.setCursorType(CursorType.STATIC); Recordset recordset = datasetVector.query(parameter); //获取数据集中自定义的字段 if (recordset.getRecordCount()>0) { recordset.moveFirst(); FieldInfos fieldInfos = datasetVector.getFieldInfos(); ArrayList<String> nameList = new ArrayList<String>(); for (int j = 0; j < fieldInfos.getCount(); j++) { String name = fieldInfos.get(j).getName(); if (name.toLowerCase().startsWith("sm")) { continue; } nameList.add(name + ":"); } } } }}
(4) 弹框显示模型属性
需要自己创建一个类似于气泡的弹框,将选中模型的(3)中得到的属性信息显示在弹框中。
3、 效果截图
完整代码链接:http://pan.baidu.com/s/1boPpq9L;密码:oy1i
- 移动端中弹框显示模型属性信息的实现方案
- UGUI上显示模型的方案
- 项目中弹出页面的显示层次问题 CSS中z-index属性
- Unity3D-在移动端显示Debug信息
- 使用CToolTipCtrl控件实现光标移动到一个控件时显示特定的提示信息
- 移动端设计与实现最佳方案
- 详解移动端页面细线实现方案
- 显示模型信息
- 给予U3D的增强现实实现思路(移动端扫描图片呈现模型并移动)
- Max 模型背面边面的不显示问题解决方案
- iphone中弹出动画的实现
- SurfaceView中弹出Dialog的实现
- Android中弹出对话框的实现
- js实现自定义话框的移动和剧中显示
- Android移动开发-属性动画的实现
- JEECG移动方案 - 应用系统转换移动应用的中间件实现方案
- 各主流浏览器(PC、移动端)USERAGENT属性信息
- 跟随鼠标的移动,动态显示提示信息
- 前端工作中的两点优化
- Android面试题汇总
- <详解>C语言实现程序跳转到绝对地址0x100000处执行
- Vue框架(一)
- 阿里云存储失败
- 移动端中弹框显示模型属性信息的实现方案
- Mybatis的$和#的区别
- 【转载】读完这些书,妈妈再也不用担心你的学习了
- DSL风格数据库编程之实践
- python日志组件logging模块(一)
- SQLSERVER的客户端连接(java web)
- Codeforces Round #443 (Div. 2) A. Borya's Diagnosis
- Django 分页
- 信息传递EventBus