SuperMap iObject入门开发系列之三管线系统标注

本文是一位好友“托马斯”授权给我来发表的,介绍都是他的研究成果,在此,非常感谢。

管线系统会涉及到一些坐标标注,属性标注,提供给用户查询获取其需要的信息,这期的文章介绍的是基于超图iObject开发的标注功能,效果如下图:

具体实现思路:

(1)首先创建一个UserControl作为属性信息的载体,在里面添加好自己需要的Textbox和Label,并在实例化该类,添加到场景控件中。

(2)再创建一个气泡参数类Bubble,通过该类可设置气泡在场景中出现的位置、背景色、气泡边框颜色和宽度、气泡的标题等。

气泡由两部分组成——外框和绘图区,在绘图区,通过传入用户自定义控件(UserControl),即上一步创建的UserControl,在控件中可设置气泡的样式和显示内容等;在外框内、绘图区外的区域的左上角,是气泡的标题区,右上角有两个按钮,分别为锁定气泡按钮和关闭气泡按钮,如下图所示。

(3)核心部分实现思路:

A.场景选择事件的实现思路

在m_sceneControl_ObjectSelected事件中,获取选中的图层对应的数据集,得到其信息,这里获取的是X,Y坐标。

然后在步骤(1)创建的UserControl填充气泡内容

在步骤(2)创建Bubble参数类中,设置气泡参数,最后添加到场景控件的Bubbles里面。代码如下:

B.场景点击事件的实现思路

场景点击事件有常见的MouseDown和MouseUp,按下鼠标和释放鼠标事件。代码如下:

在MouseDown事件中,如果点击鼠标右键时,消除气泡和清空场景选择集。

在MouseUp事件中,判断当前场景是否有气泡对象,如果有则将Bubble的pointer参数设置为当前点击位置。如果场景没选中对象,则清空气泡。部分代码如下:

C.场景气泡事件的实现思路

气泡事件涉及了三个事件,第一个是气泡初始化触发的事件BubbleInitialize事件,在初始化时获取bubble的左边界位置和上边界位置,如果选择集不为空,则将位置赋值给用户创建的UserControl,并设置其为可视。代码如下:

第二个事件为气泡位置发生变化时事件BubbleResize事件,设置与上面的初始化事件相同,代码如下:

第三个事件为气泡关闭事件BubbleClose事件,关闭Bubble时将UserControl的Visible设置为false,代码如下:

好友“托马斯”技术交流QQ:519926200

作者: GIS之家

GIS之家微信号:gishome;GIS之家拥有自己的GIS开发团队,均是高校GIS研究生,具备丰富的webgis开发项目工作经验,专注以及热爱研究webgis技术的团队

发表评论

电子邮件地址不会被公开。