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. JMS-消息中间件的应用01-基本概念-来自慕课学习-新手学习

    什么是JMS? Java消息服务(Java Message Service),即JMS,是一个java平台中关于面向消息中间件的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...

  2. Tomcat 与 数据库连接池 的小坑

    连接池的优点众所周知. 我们可以自己实现数据库连接池,也可引入实现数据库连接池的jar包,按要求进行配置后直接使用. 关于这方面的资料,好多dalao博客上记录的都是旧版本Tomcat的配置方式,很可 ...

  3. threading学习

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...

  4. System.Web.UI.Page事件执行顺序

    #region OnPreInit 第一步(显式重写,文章下面有隐式重写) protected override void OnPreInit(EventArgs e) { //检查 IsPostBa ...

  5. 【C#】CLR内存那点事(高级)

    对于这篇,不想再对值类型进行讨论,如要看值类型的内存怎么玩可以看一下(CLR内存那点事 初级),我们这篇主要讨论一下引用类型. 先来装备两个类 internal class Employee { pu ...

  6. JQuery中一些常用函数的运用

    一.JQuery的效果介绍 二.定时弹出广告图片JQ部分代码 <script type="text/javascript"> var time; $(function( ...

  7. Jquery delegate的理解

    $(".step4TagList .albumShow", "#divStep4").delegate(" .abmFct .icoRt", ...

  8. [转]解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式

    在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上.这篇文章将要在此基础上研究片段的擦除(discarding fragments)和前面剪裁.后面 ...

  9. linux系统使用sh文件传参数给matlab程序

      linux系统下使用sh文件传参数给matlab程序 (1)编写sh文件 程序以下面的行开始(必须在文件的第一行):   #!/bin/sh 定义需要传递的参数,用双引号引起,参数之间使用逗号或分 ...

  10. 洛谷P4016 负载平衡问题(费用流)

    传送门 嗯……完全不会……不过题解似乎讲的挺清楚…… 考虑一下,每一个仓库最终肯定都是平均数,所以数量大于平均数的可以往外运,小于平均数的要从别的地方运进来 考虑建一个超级源$S$和超级汇$T$,并把 ...