首页 / 浏览问题 / 移动GIS / 问题详情
android二维地图实现点选查询属性
121EXP 2019年08月21日

使用产品:SuperMap iMobile 9D(2019)(V9.1.2)SuperMap iMobile 9D(2019) SP2 for Android(精简绿色包) 操作系统:win10 x64

数据类型: 文件型

问题详细描述:如题 点击二维地图的线 或者面 弹出属性信息

1个回答

您好,您可以通过点击选择获取选择集Selection,然后通过selection转为记录集recordset。通过记录集来获取相应的属性信息。属性信息的显示位置可以自定义显示的控件。可以参考我们的示范demo:\SampleCode\GeometryInfo
9,127EXP 2019年08月21日

这个是我的数据,我通过例子里面获取的rt.getRecordCount()总是0 是什么原因

class MapGestureListener extends GestureDetector.SimpleOnGestureListener {
    @Override
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub
        Recordset rt = null;

        // 获得第10个图层
        Layer ly = m_mapControl.getMap().getLayers().get(11);
        rt  = ly.getSelection().toRecordset();

        if (rt != null) {
            if (rt.getRecordCount()<1) {
                return;
            }
            mStrCountry = rt.getFieldValue("D_S").toString();
            mStrCapital = rt.getFieldValue("SMID").toString();
            mStrContinent = rt.getFieldValue("DDATE").toString();
            mStrPop = rt.getFieldValue("PIPETYPE").toString();

            Geometry geometry = rt.getGeometry();
我看我比例子给的数据 多了一层文件夹 分离了点和线 这样怎么查呢?
您是用图层组的方式来管理图层的是吧?您可以先获取图层,然后转换为LayerGroup图层组,通过图层组去获取图层,layergroup.get()这种方式来获取图层,然后获取选择集

怎么转换LayerGroup?我用getParentGroup()这个方法获取是null 

能按照我的截图 给我个例子代码吗?
您的这个方法是获取当前图层所对应的图层组不是直接获取图层组的。你可以直接强转,如:LayerGroup layerGroup = (LayerGroup)m_mapControl.getMap().getLayers().get(0);这个的前提是他是一个图层组才能强转
LayerGroup layerGroup = (LayerGroup) m_mapControl.getMap().getLayers().get(11);提示不能强转。  java.lang.ClassCastException: com.supermap.mapping.Layer cannot be cast to com.supermap.mapping.LayerGroup

我加载的是get(11)名字是 2D。里面见截图。我不知道到底是不是图层组 报错了 估计不是吧 你看看我的截图的数据 到底是啥。
如果不是图层组 我就这样写的:
LayerGroup ly = (LayerGroup) m_mapControl.getMap().getLayers().get(11);
rt  = ly.getSelection().toRecordset();

if (rt != null) {
    if (rt.getRecordCount()<1) {
        return;
    }

但是rt.getRecordCount()总是==0 
截图里面的数据集到底怎么才能取到呢?求帮助啊 

不是,你get(11),你地图里面有12个图层吗?你说的2D是地图的名称啊,这个方法获取的是地图里面对应的图层

12个倒是有的 我改成第一个了

LayerGroup layerGroup = (LayerGroup) m_mapControl.getMap().getLayers().get(0);
Layer ly=layerGroup.get(0);
rt  = ly.getSelection().toRecordset();

ly获取到了 但是

rt.getRecordCount()还是==0 是不是要用其他获取方式
首先调试一下你的代码,layer获取成功没有?还有就是你有没有选择对象,这个对象是不是你获取的那个图层。选择对象需要和图层相对应。

我首先把PL_WS设置visible

m_layers.get("PL_WS").setVisible(true); 

长按事件获取的ly.getName()是PL_WS@北大管线经纬度#1
LayerGroup layerGroup = (LayerGroup) m_mapControl.getMap().getLayers().get(0);
Layer ly=layerGroup.get(1);
Log.i("88---",ly.getName());
然后rt = ly.getSelection().toRecordset();
rt.getRecordCount()还是==0


谢谢了 我试了一下其他数据 没问题 可能是数据有问题 取到值了yes

...