博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK矢量数据编辑事件的监听
阅读量:7144 次
发布时间:2019-06-28

本文共 5070 字,大约阅读时间需要 16 分钟。

 

1.功能简介

    通过IEditEvents接口,开发者可以监听到Editor对象的相关的事件,并且做出反应。包括Editor中开始编辑、结束编辑等操作,下面对矢量数据的编辑事件的监听功能进行介绍。

2.功能实现说明

2.1实现思路及原理说明

第一步

前提处于编辑状态,在编辑的开始和结束的时候进行触发的操作事件

2.2 核心接口与方法

接口/类

方法/属性

说明

 

 

IEditEvents

OnStartEditOperation;

开始编辑委托事件

OnStopEditOperation

结束编辑委托事件

 

IEditor

GetEditState();

获取编辑状态

StartEditOperation(string strDescription);

开始编辑操作

StopEditOperation()

结束编辑操作

2.3示例代码

项目路径

百度云盘地址下/PIE示例程序/04数据操作/07矢量数据编辑事件的监听

数据路径

 自定义即可

视频路径

百度云盘地址下/PIE视频教程/04数据操作/07矢量数据编辑事件的监听.avi

示例代码

1      //要素编辑器  2         private IEditor m_Editor = Editor.Instance;  3         //鼠标按下起点  4         private IPoint m_StartPoint = null;  5         //要素  6         private IFeature m_Feature = null;  7         //标识符  8         private int m_Flag = 0;  9    //地图初始化绑定编辑监听事件 10   private void FormMain_Load(object sender, EventArgs e) 11         { 12             //初始化绑定编辑监听事件 13             IEditEvents editEvents = Editor.Instance; 14             editEvents.OnStartEditOperation += editEvents_OnStartEditOperation; 15             editEvents.OnStopEditOperation += editEvents_OnStopEditOperation; 16         } 17 //委托事件 18         public void editEvents_OnStartEditOperation() 19         { 20             MessageBox.Show("开始绘制"); 21         } 22         public void editEvents_OnStopEditOperation() 23         { 24             MessageBox.Show("完成绘制"); 25         }     26      27          ///  28         /// 开始编辑 29         ///  30         ///  31         ///  32         private void ToolStripMenuItem_StartEdit_Click(object sender, EventArgs e) 33         { 34             if (m_Editor.GetEditState() == EditState.StateNotEditing) 35             { 36                 MessageBox.Show("开始编辑"); 37                 m_Editor.StartEditing(); 38             } 39         } 40  41         ///  42         /// 结束编辑 43         ///  44         ///  45         ///  46         private void ToolStripMenuItem_StopEdit_Click(object sender, EventArgs e) 47         { 48             if (m_Editor.GetEditState() == EditState.StateEditing) 49             { 50                 if (MessageBox.Show("结束编辑前是否保存编辑数据", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.OK) 51                 { 52                     m_Editor.SaveEditing();//保存编辑                  53                 }               54                     m_Editor.StopEditing(true);//停止编辑                           55             } 56         } 57        ///  58         /// 地图控件鼠标移动事件 59         ///  60         ///  61         ///  62  63         private void mapControlMain_MouseDown(object sender, MouseEventArgs e) 64         { 65             if (e.Button != System.Windows.Forms.MouseButtons.Left) return; 66  67             if (m_Editor.GetEditState() == EditState.StateEditing) 68             { 69                 m_StartPoint = mapControlMain.FocusMap.ToMapPoint(e.Location); 70                 List
layerList = new List
(); 71 int iLayerCount = mapControlMain.FocusMap.LayerCount; 72 if (iLayerCount > 0) 73 { 74 ILayer layer = mapControlMain.GetLayer(iLayerCount - 1); 75 layerList.Add(layer); 76 if (layer.IsValid()) 77 { 78 if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; 79 80 IGeometry geometry = null; 81 switch (m_Flag) 82 { 83 case 2: 84 mapControlMain.ActiveView.FocusMap.ClearSelectionFeatures(); 85 m_Editor.StartEditOperation("开始编辑"); 86 geometry = mapControlMain.TrackPolygon() as IGeometry; 87 geometry.SpatialReference = mapControlMain.SpatialReference; 88 89 IFeatureClass featureClass = (layer as IFeatureLayer).FeatureClass; 90 m_Feature = featureClass.CreateNewFeature(); //创建Feature 91 m_Feature.Geometry = geometry; 92 featureClass.AddFeature(m_Feature); //添加Feature 93 // featureClass.Save(); //保存 94 m_Editor.StopEditOperation(); 95 mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);//不能少 96 m_Flag = 0; //一定要加 97 break; 98 default: 99 break;100 }101 }102 }103 }104 }105 106 ///
107 /// 绘制面状要素108 /// 109 ///
110 ///
111 private void toolStripButton_DrawPolygon_Click(object sender, EventArgs e)112 {113 m_Flag = 2;114 }
View Code

2.4示例截图

 

   

  

转载于:https://www.cnblogs.com/PIESat/p/10168710.html

你可能感兴趣的文章
怎样加载脚本在winpe下
查看>>
route命令详解
查看>>
兵以诈立——我读孙子
查看>>
Nagios报Error: Could not read object configuration data!解决方法
查看>>
Web 服务编程,REST 与 SOAP 为什么选择 REST
查看>>
lamp环境下phpwind,wordpress,discuz论坛的搭建全过程
查看>>
Maven更新包数度慢
查看>>
linux shell 判断 if 脚本
查看>>
软件设计是怎样炼成的(7)——细节决定成败(详细设计)
查看>>
UVA11300 Spreading the Wealth
查看>>
C的一种老写法,没怎么理解,大家看看
查看>>
Linux系统安装如何给磁盘分区
查看>>
TOMCAT日常调整的手记.
查看>>
我的友情链接
查看>>
配置功能: WiFi无线网络配置代理
查看>>
备份服务器为什么不稳定的原因?
查看>>
我的友情链接
查看>>
转载-------我当网络包租公的日子
查看>>
linux下的公式编辑器
查看>>
网卡初始化一般操作
查看>>