首页 / 浏览问题 / 移动GIS / 问题详情
Android记录集问题
45EXP 2022年06月15日

通过条件查询到记录集合中的数据。选中这条数据,点击定位到地图按钮,然后在图层直接定位到该条数据的位置,并将这条数据的几何对象变为选中对象,这个该怎实现

1个回答

您好,请问您是哪一步遇到问题了呢,正常来说,应该选中这条数据记录再获取到SmX与SmY的值,再将其放入一个point2d中,接着将地图的中心设为该点,再用selection搭配几何对象的ID即可实现。

希望可以帮助到您。
3,440EXP 2022年06月15日
好的 我去试试,哪个SmX与SmY的值该怎么取啊,是系统字段嘛。点图层有SmX与SmY,线和面图层没有SmX与SmY值,有4个值应该用哪个啊
您可以获取几何对象的最小外接矩形,再得到其中心,即

Rectangle2D  rectangle2d = georegion.getBounds();

Point2D point = rectangle2d.getCenter();

希望可以帮助到您。
好的 去试试 不懂再问您 谢谢

我这个选择集加了几何对象,然后选中的状态没有变颜色。还有一个问题用selection选中的集合对象,可以用MapControl.setAction,对他进行一些编辑操作嘛。

您好,关于第一个问题,请您参考下imobile中selection的用法示例代码,关于第二个问题,map.setaction(ACTION.XXX)可以进行一些操作的

希望可以帮助到您。
意思MapControl.setAction上的一些对数据编辑操作,只能对Action.SELECT可以用是嘛。
您可以看一下imobile的帮助文档,action里面有很多地图操作状态类常量的,ACTION.SELECT用于在对象上点击,选择对象,除此之外还有框选等等常量,您可以根据自己的要求来选择对应的接口

我看用法示例了,我用这俩种写法,都无法给选中的对象进行高亮显示啊。

首先您要确定已经将目标对象放到selection中了,您试着用下selection.fromRecordset(recordset)呢,该方法用于把一个记录集转化为选择集,即记录集所对应的对象全部呈选中状态,其中recordset为目标对象的ID查询的结果

确定目标对象放入了selection里面了,只有一个对象。这个对象是从记录集里面选中到的一条数据的smID,放进了selection里面了,因为需求是只选中记录集中的一条数据在对应的几何对象上高亮显示。现在是selection里面已经有一个几何对象了,就是给他设置其他颜色的style没有反应。

这里您的选择集中存放的对象是点、线还是面呢,建议您把点、线、面颜色都设置一下,然后再打印一下点、线、面的geostyle呢,看看是否已经设置上了呢
好的 那我明白了 我试一下

打印出来的的style:

{FillBackColor = com.supermap.data.Color@6dce69d,FillForeColor = com.supermap.data.Color@4c03712,FillGradientAngle = 0.0,FillGradientOffsetRatioX = 0.0,FillGradientOffsetRatioY = 0.0,FillGradientMode = NONE,FillOpaqueRate = 10,FillSymbolID = 0,LineColor = com.supermap.data.Color@8b1ee3,LineSymbolID = 0,LineWidth = 1.0,MarkerAngle = 0.0,MarkerSize = Width=28.0,Height=28.0,MarkerSymbolID = 0}
 

好像都设置上了,但是显示的几何对象还是不变得默认得跟其他没选中得一样。难道我需要把Geometry强转成点、线、面的几何类型嘛。

您可以获取到selcetion中的对象位置再添加callout到图层上对象的对应位置,参考范例geometryinfo
这个问题我后来改了,但是有问题,对大地坐标系的矢量数据 选择集的风格能显示,但是投影坐标系的矢量数据加入选择集设置风格不显示。
...