首页 / 浏览问题 / 移动GIS / 问题详情
移动三维属性弹框
gyf
19EXP 2017年04月26日
原先的移动三维矢量缓存,移动端点击三维建筑显示属性信息,后来将三维矢量缓存换成osgb三维缓存,不过点击三维建筑不显示属性信息,为什么:(下面是显示属性信息代码)

    class SceneTouchListener implements OnTouchListener {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub

                switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case (MotionEvent.ACTION_UP): {

                    Layer3Ds layer3ds = mSceneControl.getScene().getLayers();
                    int count = layer3ds.getCount();

                    for (int i = 0; i < count; i++) {
                        Layer3D layer = layer3ds.get(i);
                        Selection3D selection = layer.getSelection();
                    if (selection.getCount() > 0) {
         QueryInfoBubble queryInfoBubble = new QueryInfoBubble(MainActivity.this);

                    Feature3D feature =selection.toFeature3D();//转换三维数据

            FieldInfos FieldInfos = layer.getFieldInfos();//三维对象属性信息集合对象
            for (int j = 0; j < FieldInfos.getCount(); j++) {//三位对象属性个数
                     String name = FieldInfos.get(j).getName();
                                if (name.startsWith("SM")) {
                                    continue;
                                }
                                String strValue;
                            Object value = feature.getFieldValue(name);
                                if (value == null) {
                                    strValue = "";
                                } else {
                                    strValue = value.toString();
                                }
                            queryInfoBubble.additem(name, strValue);
                            }
                        queryInfoBubble.show(mSceneControl, event.getX(),
                           event.getY());
                        }
                    }
                }
                    break;

2 个回答

获取osgb缓存图层中对象的属性请参考接口Layer3DOSGBFile中的getFieldValueOfSelectedObject()函数"返回选中对象的属性数据表中指定ID字段的值",关于接口更多的描述及使用参考联机帮助文档说明。
杨兵
1
1,430EXP 2017年04月27日
嗯,我试试,谢谢

你好,osgb缓存数据无法通过selection3d转成feature3d,你调试一下看返回的结果是否为空,对于osgb缓存数据如果想获取模型对象的属性,先得到selection3d,然后得到这个选中对象的id,再通过这个id在该模型切缓存前的原始数据集获取该对象的属性,最后显示出来。在资源中心上有一个范例可以参考http://pan.baidu.com/share/init?shareid=2672841746&uk=1997594217;密码:oy1i

2,042EXP 2017年04月27日
import android.app.usage.UsageEvents.Event;这个报错,但是把这个删了,程序没有报错

不过示范数据有弹框但是没内容,我以为没有传入数据,但是就算queryInfoBubble.additem("11111","2222")内容写成固定的照样有弹框没内容.实在不知道哪错了,是因为少个jar包么?
如果你运行的范例弹框了但是没有内容可能是没有运行queryInfoBubble.additem()这个,前面的那个判定条件没有进入,建议你在这句之前打一个断点调试看是否运行了这句代码。
...