首页 / 浏览问题 / 组件GIS / 问题详情
静态图层标绘修改
31EXP 2022年11月09日
将标绘UGGraphobject创建并添加到,uglayer图层的ugrecordset中上图,但是如果想要修改添加后的标绘坐标和颜色,并在地图上更新,有什么函数可以实现吗

1个回答

可以参考extention4qt返利中的关键代码:

GOPropertyPanel.cpp源文件中onSymbolStylePropertyValueChanged,设置完UGGraphobject的风格后,需要通过ugrecordset去更新对象(更新对象,可以参考里面的UpdateGraphicObject方法)

,更新完对象后刷新地图即可。

4,620EXP 2022年11月09日

您好,不知道我的方法的问题,修改后,在这里qdebug输出的jd和wd是0,然后再主函数查看修改后的标绘坐标还是修改前的原坐标,而且标绘不在地图上显示了

setgeometry是在你对对象修改完成后,将修改完成后的对象去更新原来的记录,不是获取出来后马上就去setgeometry;

1、修改你的几何对象位置或者风格;

2、recordset.edit(锁定编辑,告诉recordset,要对当前记录进行修改)

3、recordset.setgeometry()将当前记录更新为修改后的对象,

4、recordset.update();提交修改记录;

你可以用一个点数据先按照上面的逻辑去实现看一下修改的效果
我试了一下修改颜色成功了,但是修改UGGraphobject的位置的函数没有找到,还有就是请问怎么在recordset中获取指定的UGGraphobject对象在recordset的索引
你是想要改变他的整个图形形状还是只是想要移动位置,如果想要改变整个形状的话,建议重新狗在一个新的标会对象去替换,如果只是想要改变一下位置,可以用平移的方法,把对象平移过去,平移方法Offset

//! \brief 平移
        //! \param dX 平移的X偏移量
        //! \param dY 平移的Y偏移量
        virtual void Offset( UGdouble dX, UGdouble dY);

        //! \brief 平移
        //! \param [in]偏移量(X,Y方向相同)
        virtual void Offset( UGdouble dOffset);

        //! \brief 平移
        //! \param [in]平移的偏移量(分别用UGSize2D中的x,y代表X,Y方向的偏移量)
        virtual void Offset( const UGSize2D &szOffset);

关于新的问题去这个链接查看答案http://ask.supermap.com/116838,为了方便后续其他用户进行相同问题搜索

移动位置就行,但是想通过修改经纬度移动
...