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. 【原创测试】MongoDB千万级插入数据测试(MMO在线游戏应用场合)

    一.筹备 我们要做一次千万级的MONGODB测试,操作系统选用CentOS 5.5 64位版,基本模拟实际的使用环境,采用单机集群模型(测试单机多CPU情况下的实际效果). 测试基准数据: 服务器配置 ...

  2. Which Uri Encoding method should i use in C#/.net?

    June 19, 2015 This too is one of the boring "factual" posts. Sorry Lachlan. I never know w ...

  3. jsp-MySQL连接池

    1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中: mysql-connector-java-5.1.18-bin.jar 下载地址:https://yunpan.cn/c ...

  4. 编写高质量代码改善C#程序的157个建议——建议61:避免在finally内撰写无效代码

    建议61:避免在finally内撰写无效代码 在阐述建议之前,需要先提出一个问题:是否存在一种打破try-finally执行顺序的情况,答案是:不存在(除非应用程序本身因为某些很少出现的特殊情况在tr ...

  5. Hibernate不能建表的问题

    项目使用hibernate进行正向工程建立表,各项配置都正确,但就是不能生成对应的表,这就纳闷了!! 类: public class Market { private Long id; private ...

  6. bzoj 3224/Tyvj 1728 普通平衡树(splay)

    Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数 ...

  7. Nexus 私有仓库

    Nexus3.6和Nexus2.x安装不同,2.x版本需要安装服务,再启动.而3.6版本则更加简单. 步骤如下: jdk环境:1.8 Nexus3.6解压(注意,路径不要带空格及中文),解压后有两个文 ...

  8. T-SQL查询进阶--SQL Server中的事务与锁

    为什么需要锁 在任何多用户的数据库中,必须有一套用于数据修改的一致的规则,当两个不同的进程试图同时修改同一份数据时,数据库管理系统(DBMS)负责解决它们之间潜在的冲突.任何关系数据库必须支持事务的A ...

  9. VS Code 运行html文件

    用VS Code编写html文件,想在VS Code中直接打开运行,配置如下: 配置tasks.json 打开VS Code,点击"终端",选择"配置任务". ...

  10. Can't install Solaris 10 on XenServer 6.5 VM

    I have XenServer 6.5 installed on a server, and i have been trying to install Solaris 10 on a VM, it ...