首页 / 浏览问题 / 移动GIS / 问题详情
SuperMap iMobile10i 获取图层数据
66EXP 2020年10月22日

获取shp图层数据只能用Recordset.getFieldValue("字段名")的方法获取数据吗?有没有别的方法可以直接获取shp图层所有的字段值。就是想获取图片左侧的所有数据

1个回答

您好,字段信息是存储在记录集中的,如果要获取到数据集的字段信息,需要遍历该数据集的记录集recordset来获取
9,232EXP 2020年10月22日

如果图层表的字段及数据是动态,可变化的。需要用到FieldInfos的方法获取字段名称,遍历字段信息,
FieldInfos fieldInfos = recordset.getFieldInfos();

//循环获取recordset
recordset.moveFirst();
for (int i = 0; i < fieldInfos.getCount(); i++) {     
    while (!recordset.isEOF()) {
recordset.getFieldValue(fieldInfos.get(i).getName());
    }
}

;;;fieldInfos.get(i).getName()方法会把系统字段也获取到,有没有方法能剔除系统字段的信息,减少遍历次数呢?

你在获取字段值的时候可以不用获取的系统字段的,自己在上层做控制,可以把获取的字段名做一个过滤,将Sm开头的字段给过滤掉,这样就只会遍历系统字段了
我有A\B\C\D四个图层都重叠显示在地图上,点击地图上图层的位置,用点查面的方法,有事件穿透问题存在!这四个图层都能有信息数据获取,怎么能只获取显示在最上层的那个图层的信息数据呢?我不确定最上层的图层是A\B\C\D的哪一个。
 

我用点位置是写死的一个经纬度,想用mapview的监听事件获取坐标,也没找到起作用的方法。请教一下这两个问题
你可以获取最上层图层的名称,然后和你查询后结果图层做一个匹配。如果匹配成功就做查询
在获取getDataset()数据集之前,用的哪个方法取到的上层图层的名称呢?
map.getLayers.get(0)该方法就是获取第一层的图层,然后可以通过该图层获取所关联的数据集dataset,再做查询
我用点位置是写死的一个经纬度,想用mapview的单击监听事件获取坐标用来做点查面的功能,单击事件没有起作用。想请教一下这个问题
通过手势点击onTouch事件获取屏幕坐标,然后通过map.pixelToMap()方法转换为地图坐标
...