PIE SDK矢量數據編輯事件的監聽

 

1.功能簡介編輯器

    經過IEditEvents接口,開發者能夠監聽到Editor對象的相關的事件,而且作出反應。包括Editor中開始編輯、結束編輯等操做,下面對矢量數據的編輯事件的監聽功能進行介紹。ide

2.功能實現說明spa

2.1實現思路及原理說明code

第一步orm

前提處於編輯狀態,在編輯的開始和結束的時候進行觸發的操做事件視頻

2.2 核心接口與方法對象

接口/類blog

方法/屬性教程

說明接口

 

 

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          /// <summary>
 28         /// 開始編輯
 29         /// </summary>
 30         /// <param name="sender"></param>
 31         /// <param name="e"></param>
 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         /// <summary>
 42         /// 結束編輯
 43         /// </summary>
 44         /// <param name="sender"></param>
 45         /// <param name="e"></param>
 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        /// <summary>
 58         /// 地圖控件鼠標移動事件
 59         /// </summary>
 60         /// <param name="sender"></param>
 61         /// <param name="e"></param>
 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<ILayer> layerList = new List<ILayer>();
 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 /// <summary>
107         /// 繪製面狀要素
108         /// </summary>
109         /// <param name="sender"></param>
110         /// <param name="e"></param>
111         private void toolStripButton_DrawPolygon_Click(object sender, EventArgs e)
112         {
113             m_Flag = 2;
114         }
View Code

2.4示例截圖

 

   

  

相關文章
相關標籤/搜索