android二维地图属性查询

0 投票

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

数据类型: 文件型

问题详细描述:属性查询必须写在

onLongPress这个方法里面吗?我写在
onDown里面不管用 写在onLongPress能成功,一样的代码

我想实现的是点击地图就查询 不想长按查询

9月 26, 2019 分类:  132次浏览 | 用户: dong 初出茅庐 (71 分)

1个回答

0 投票
 
已采纳
您好,您可以调试一下您的代码,是否进入onDown事件里面,如果您那边的需求是想通过点击地图中的对象,然后查询该对象的属性信息,您可以直接通过选择集selection来获取记录集recordset,这样就可以直接获取属性信息了,也是点击地图查询而不是长按地图查询。
9月 26, 2019 用户: 董懿鑫 登峰造极 (5,818 分)
采纳于 9月 26, 2019 用户:dong

我用的例子GeometryInfo这个项目 自己写了个onDown方法 

onLongPress的所有内容复制过去 不管用 
// 手势监听器
class MapGestureListener extends SimpleOnGestureListener{
   @Override
   public void onLongPress(MotionEvent e) {
      // TODO Auto-generated method stub
      m_mapControl.setAction(Action.SELECT);
      Recordset rt = null;

      // 获得第10个图层
      Layer ly = m_mapControl.getMap().getLayers().get(9);
      String name=ly.getName();
      rt  = ly.getSelection().toRecordset();
   
      if (rt != null) {        
         if (rt.getRecordCount()<1) {
            return;
         }
                  // 显示标注
      }
      
      super.onLongPress(e);
   }

       @Override
       public boolean onDown(MotionEvent e) {
      m_mapControl.setAction(Action.SELECT);
           Recordset rt = null;

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

           if (rt != null) {
               if (rt.getRecordCount()<1) {
                   return false;
               }
               // 显示标注
           }
           return super.onDown(e);
       }
   }

这是代码 您那边可以试试

您那边有调试代码是否进入那个事件吗?只要你能进入那个事件就可以进行属性查询了。您那边详细地说明一下需求

进入了

onDown里面
if (rt.getRecordCount()<1) 这个是0

onLongPress里面

if (rt.getRecordCount()<1) 这个是1

点击的都是中国这个区域

您好,您使用onDown事件这个手势都没有结束肯定不会有选中对象啊。我们提供了地图选中事件啊,您可以直接使用这个事件:mapcontrol.addGeometrySelectedListener(GeometrySelectedListener listener)

好的谢谢 就是找这个方法
...