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

示例代码

      //要素编辑器
private IEditor m_Editor = Editor.Instance;
//鼠标按下起点
private IPoint m_StartPoint = null;
//要素
private IFeature m_Feature = null;
//标识符
private int m_Flag = ;
//地图初始化绑定编辑监听事件
private void FormMain_Load(object sender, EventArgs e)
{
//初始化绑定编辑监听事件
IEditEvents editEvents = Editor.Instance;
editEvents.OnStartEditOperation += editEvents_OnStartEditOperation;
editEvents.OnStopEditOperation += editEvents_OnStopEditOperation;
}
//委托事件
public void editEvents_OnStartEditOperation()
{
MessageBox.Show("开始绘制");
}
public void editEvents_OnStopEditOperation()
{
MessageBox.Show("完成绘制");
} /// <summary>
/// 开始编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToolStripMenuItem_StartEdit_Click(object sender, EventArgs e)
{
if (m_Editor.GetEditState() == EditState.StateNotEditing)
{
MessageBox.Show("开始编辑");
m_Editor.StartEditing();
}
} /// <summary>
/// 结束编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ToolStripMenuItem_StopEdit_Click(object sender, EventArgs e)
{
if (m_Editor.GetEditState() == EditState.StateEditing)
{
if (MessageBox.Show("结束编辑前是否保存编辑数据", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.OK)
{
m_Editor.SaveEditing();//保存编辑
}
m_Editor.StopEditing(true);//停止编辑
}
}
/// <summary>
/// 地图控件鼠标移动事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param> private void mapControlMain_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button != System.Windows.Forms.MouseButtons.Left) return; if (m_Editor.GetEditState() == EditState.StateEditing)
{
m_StartPoint = mapControlMain.FocusMap.ToMapPoint(e.Location);
List<ILayer> layerList = new List<ILayer>();
int iLayerCount = mapControlMain.FocusMap.LayerCount;
if (iLayerCount > )
{
ILayer layer = mapControlMain.GetLayer(iLayerCount - );
layerList.Add(layer);
if (layer.IsValid())
{
if (layer.LayerType != LayerType.LayerTypeFeatureLayer) return; IGeometry geometry = null;
switch (m_Flag)
{
case :
mapControlMain.ActiveView.FocusMap.ClearSelectionFeatures();
m_Editor.StartEditOperation("开始编辑");
geometry = mapControlMain.TrackPolygon() as IGeometry;
geometry.SpatialReference = mapControlMain.SpatialReference; IFeatureClass featureClass = (layer as IFeatureLayer).FeatureClass;
m_Feature = featureClass.CreateNewFeature(); //创建Feature
m_Feature.Geometry = geometry;
featureClass.AddFeature(m_Feature); //添加Feature
// featureClass.Save(); //保存
m_Editor.StopEditOperation();
mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);//不能少
m_Flag = ; //一定要加
break;
default:
break;
}
}
}
}
} /// <summary>
/// 绘制面状要素
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_DrawPolygon_Click(object sender, EventArgs e)
{
m_Flag = ;
}

2.4示例截图

  

PIE SDK矢量数据编辑事件的监听的更多相关文章

  1. PIE SDK矢量数据编辑的撤销和回退

    1.功能简介 在数据的编辑过程中难免会出现失误,撤销和回退可以更好的编辑,下面对矢量数据编辑的撤销和回退功能进行介绍. 2.功能实现说明 2.1. 实现思路及原理说明 第一步 调用UndoComman ...

  2. PIE SDK元素事件的监听

    1功能简介 元素在操作的过程中,如添加,删除,选中等操作都需要有事件的监听,PIE SDK支持对元素操作事件的监听,下面对元素事件的监听进行介绍. 2功能实现说明 2.1.1 实现思路及原理说明 第一 ...

  3. Spring Boot 事件和监听

    Application Events and Listeners 1.自定义事件和监听 1.1.定义事件 package com.cjs.boot.event; import lombok.Data; ...

  4. uniapp仿h5+fire自定义事件触发监听

    仿h5+fire自定义事件触发监听 uni-app调用 event.js 源码记录(点击查看) 1.js下载地址 [event.js](https://ext.dcloud.net.cn/plugin ...

  5. 最优-scroll事件的监听实现

    1. 背景和目标 前端在监听scroll这类高频率触发事件时,常常需要一个监听函数来实现监听和回调处理.传统写法上利用setInterval或setTimeout来实现. 为了减小 CPU 开支,往往 ...

  6. 事件的监听是由awt完成的

    学swing 之前先学awt ,因为awt 是Java实现图形界面的基础. 它能够完成编写界面的基本功能,最重要的是,事件的监听是由awt完成的. 而swing是在awt基础上提供的新的界面工具包,它 ...

  7. 深入理解Spring的容器内事件发布监听机制

    目录 1. 什么是事件监听机制 2. JDK中对事件监听机制的支持 2.1 基于JDK实现对任务执行结果的监听 3.Spring容器对事件监听机制的支持 3.1 基于Spring实现对任务执行结果的监 ...

  8. MVC框架入门准备(三)事件类 - 事件的监听和触发

    在mvc框架中可以看到事件类,实现事件的监听和触发. 举例: <?php /** * 事件类 */ class Event { // 事件绑定记录 private static $events; ...

  9. Spring Boot(六)自定义事件及监听

    事件及监听并不是SpringBoot的新功能,Spring框架早已提供了完善的事件监听机制,在Spring框架中实现事件监听的流程如下: 自定义事件,继承org.springframework.con ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议32:总是优先考虑泛型

    建议32:总是优先考虑泛型 泛型的优点是多方面的,无论泛型类还是泛型方法都同时具备可重用性.类型安全性和高效率等特性,这是非泛型和非泛型方法无法具备的. 以可重用性为例: class MyList { ...

  2. 【实习项目记录】(二) JSON

    介绍 JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Program ...

  3. CentOS下配置防火墙 配置nat转发服务

    CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机 ...

  4. subset子集全排序问题

    思路一 可以用递推的思想,观察S=[], S =[1], S = [1, 2] 时解的变化. 可以发现S=[1, 2] 的解就是 把S = [1]的所有解末尾添上2,然后再并上S = [1]里面的原有 ...

  5. 6w5:第六周程序填空题2

    描述 下面程序的输出结果是: destructor B destructor A 请完整写出 class A. 限制条件:不得为 class A 编写构造函数. #include <iostre ...

  6. javascript正则表达式——元字符

    元字符(Metacharacter)是拥有特殊含义的字符: 元字符        描述 (1)   .             查找单个字符,除了换行和行结束符. 例子: <!DOCTYPE h ...

  7. kali linux之被动信息收集(dns信息收集,区域传输,字典爆破)

    公开可获取的信息,不与目标系统产生交互,避免留下痕迹 下图来自美军方 pdf链接:http://www.fas.org/irp/doddir/army/atp2-22-9.pdf 信息收集内容(可利用 ...

  8. 【转】WinForm时间选择控件(DateTimePicker)如何选择(显示)时分秒

    源地址:https://www.cnblogs.com/EvanFan/p/7826160.html 注意:年月日时分秒的大小写格式,如果错了数据就错了,如果能显示当前时间说明设置正确

  9. 3. C/C++笔试面试经典题目三

    64. 如何打印出当前源文件的文件名以及源文件的当前行号? [参考答案]cout << __FILE__ ; cout<<__LINE__ ; __FILE__和__LINE_ ...

  10. Scanner类的用法

    Scanner类,一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. 用于扫描输入文本的实用程序.位于java.util包中. 使用Scanner接收键盘输入的字符,步骤: 1.导入Sca ...