PIE SDK地圖範圍設定和圖層事件監聽
阿新 • • 發佈:2019-01-09
1. 功能簡介
地圖範圍設定的監聽就是通過IMapControlEvents介面對地圖的檢視範圍更新或者地圖的解析度發生變化進行監聽,然後做出相應的操作。
圖層事件的監聽就是通過IActiveViewEvents介面對地圖的新增,刪除和移動圖層操作進行監聽,然後做出相應操作,例如鷹眼圖,當監聽主地圖新增一個新圖層資料時,鷹眼圖就可以通過將新圖層顯示在鷹眼圖中。
2. 功能實現說明
2.1. 實現思路及原理說明
第一步 |
繫結地圖檢視事件,新增地圖控制的監聽事件 |
第二步 |
根據不同的事件進行不同的功能操作 |
2.2. 核心介面與方法
介面/類 |
方法/屬性 |
說明 |
PIE.Carto.IActiveViewEvents |
OnLayerAdded |
圖層新增事件 |
OnLayerDeleted |
圖層刪除事件 |
|
OnLayerReordered |
圖層排序事件 |
|
PIE.AxControls.IMapControlEvents |
OnExtentUpdated |
檢視更新事件 |
OnResolutionUpdated |
檢視解析度更新事件 |
2.3. 示例程式碼
專案路徑 |
百度雲盤地址下/PIE示例程式/02.地圖操作/02.地圖圖層控制/PIEMapLayerControlDemo |
資料路徑 |
百度雲盤地址下/PIE示例資料/柵格資料/ |
視訊路徑 |
百度雲盤地址下/PIE視訊教程/02.地圖操作/03.地圖範圍設定和圖層事件監聽/xx..avi |
示例程式碼 |
|
1 /// <summary> 2 /// 建構函式 3 /// </summary> 4 public FormMain() 5 { 6 InitializeComponent(); 7 tocControlMain.SetBuddyControl(mapControlMain as PIE.Carto.IPmdContents); 8 //圖層控制監聽事件 9 IActiveViewEvents activeViewEvents = mapControlMain.FocusMap as PIE.Carto.IActiveViewEvents; 10 activeViewEvents.OnLayerAdded += MapControl_OnLayerAdded;//圖層新增事件 11 activeViewEvents.OnLayerDeleted += MapControl_OnLayerDeleted;//圖層刪除事件 12 activeViewEvents.OnLayerReordered+=MapControl_OnLayerReordered; //圖層排序事件 13 //地圖範圍變化監聽事件 14 PIE.AxControls.IMapControlEvents mapControlEvent= mapControlMain as PIE.AxControls.IMapControlEvents; mapControlEvent.OnExtentUpdated+=mapControlEvent_OnExtentUpdated;//地圖範圍變化事件 15 mapControlEvent.OnResolutionUpdated+=mapControlEvent_OnResolutionUpdated;//地圖解析度更新事件 16 } 17 18 /// <summary> 19 /// 圖層新增事件(圖層新增後會觸發該事件) 20 /// </summary> 21 /// <param name="layer"></param> 22 private void MapControl_OnLayerAdded(ILayer layer) 23 { 24 string str = string.Format("新增{0}圖層", layer.Name); 25 MessageBox.Show(str,"提示"); 26 } 27 /// <summary> 28 /// 圖層移除事件 (地圖刪除後會觸發該事件) 29 /// </summary> 30 /// <param name="layer"></param> 31 private void MapControl_OnLayerDeleted(ILayer layer) 32 { 33 string str = string.Format("刪除{0}圖層", layer.Name); 34 MessageBox.Show(str, "提示"); 35 } 36 /// <summary> 37 /// 圖層排序事件(當圖層移動後會觸發該事件) 38 /// </summary> 39 /// <param name="layer"></param> 40 private void MapControl_OnLayerReordered(ILayer layer, int index) 41 { 42 string str = string.Format("移動{0}圖層,到索引為{1}的位置", layer.Name,index); 43 MessageBox.Show(str, "提示"); 44 } 45 /// <summary> 46 /// 地圖範圍發生變化事件 47 /// </summary> 48 /// <param name="sender"></param> 49 /// <param name="sizeChanged"></param> 50 /// <param name="newEnvelope"></param> 51 private void mapControlEvent_OnExtentUpdated(object sender, bool sizeChanged, IEnvelope newEnvelope) 52 { 53 MessageBox.Show("地圖範圍發生變化"); 54 } 55 /// <summary> 56 /// 地圖解析度發生變化事件 57 /// </summary> 58 /// <param name="displayTransformation"></param> 59 private void mapControlEvent_OnResolutionUpdated(IDisplayTransformation displayTransformation) 60 { 61 MessageBox.Show("地圖解析度發生變化"); 62 }View Code |
2.4. 示例截圖