如何获取地图中的线对象

0 投票
先在地图上进行画线、然后我需要对某条线增加点,或者改变点的位置,我应该如何获得地图上的线对象,
3月 26 分类:  107次浏览 | 用户: szcv612 初出茅庐 (39 分)
重新分类 3月 26 用户:华红霞

2 个回答

0 投票
你好,如果你画线是画到数据集里面的,那么需要从数据集datasetvector中获取recordset,再从recordset中获取geometry对象

  如果你是添加到Trackinglayer上的,那么需要从trackinglayer上获取
3月 26 用户: 邬袁凯 名扬四海 (2,429 分)
你好!我是画到数据集中的,我现在已经获取到gemoetry的对象,但是往下我不知道怎么从gemoetry中获取到我需要的线对象
直接把geometry强制转换成geoline就行了
我强制转换后

plane. getsubcount了()获取子对象个数为0但是我地图上是有三条线的,我用ptorecordset. getrecotdcount()获取的记录个数五个,为啥获取的子对象个数为0?
你好,你这边是.net还是c++的开发平台呢
c++,我现在情况是这样如果我的数据集中只画线,而且线是多条,用getsubcount得到的值就只是1,如果我在数据集中除了画线以外,我还进行了标绘得到的值为0
0 投票
您好,在地图上改变位置,可以将交互模式切换到节点编辑,然后选中节点,拖动即可,设置如下:

pMapWnd->GetEditToolPack()->SetAccessibilityActionPointMode(UGC::UGEditType::EAA_EditPoint);
3月 26 用户: 幸俊 学富五车 (694 分)
你好!我有可能不只是这种方式,有可能会是通过见面输入点的位置来增加,修改,删除已经画好了的线
你好我按照你的这种设置方式设置时,当我鼠标点击节点时,在调用onlbuttondown事件时出错,
你好!由于项目需要,我在跟踪层画面方便以后对画好的面进行增删改,但是在画的时候出现永远是开始点. 结束点与倒数第二个点连成三角形,而我需要的是,我的每个点相连成面,应该如何解决?

1. 输入坐标方式,可以参考iDesktop查看对象属性的方式,可修改节点。需要直接修改数据集中的几何对象,先选择对象,通过选择监听获得选中对象,并查询获得记录,获取记录几何对象从而修改坐标。

  可参考GitHub项目https://github.com/Jun0x01/JunSuCpp ,搜索selection相关的

2.  鼠标事件出错,信息不足,无法确定。这个和你实现的事件有关

3. 跟踪层不支持绘制、修改,只有代码往跟踪层添加对象。很抱歉,没有将面显示成三角形的对象,如果需要,只能绘制。

你好!我在地图上画了线,面,用一个按钮来设置图层可选择,可编辑,我鼠标选中面,或者线,进入我获取选中集的程序中,但是用p selection. getsize()得到的值为0不清楚是为啥
只有当对象被选中,或用代码添加对象到选择集,选择集才有内容,若size为0说明,你这个不是对象选中事件。选择有选择回调函数,设置交互模式为选中:

UGMapEditWnd::SetGeometrySelectedFunc()

UGMapEditWnd::SetSelectionMode(UGMapWnd::smContainCentroid);
UGMapEditWnd::SetUserAction(UGDrawParamaters::UGMapUserAction::uaPointModeSelect);
你好!我画了两个点的一条线,并获取到了这两个点的坐标值,我现在要在这条线上增加一点,ugbool inset=pline. insertpoint(0,2,pts) m_qmapcontrol.ref,inset的值为1但是在地图上线没有变化,没有增加点
上面写错了应该是m_qmapcontrol. refresh()
代码修改对象,需要通过UGRecordset,修改后SetGeometry(), Update() ,刷新地图
...