地圖範圍設置的監聽就是經過IMapControlEvents接口對地圖的視圖範圍更新或者地圖的分辨率發生變化進行監聽,而後作出相應的操做。ide
圖層事件的監聽就是經過IActiveViewEvents接口對地圖的添加,刪除和移動圖層操做進行監聽,而後作出相應操做,例如鷹眼圖,當監聽主地圖添加一個新圖層數據時,鷹眼圖就能夠經過將新圖層顯示在鷹眼圖中。函數
第一步spa |
綁定地圖視圖事件,添加地圖控制的監聽事件3d |
第二步code |
根據不一樣的事件進行不一樣的功能操做orm |
接口/類視頻 |
方法/屬性blog |
說明排序 |
PIE.Carto.IActiveViewEvents教程 |
OnLayerAdded |
圖層添加事件 |
OnLayerDeleted |
圖層刪除事件 |
|
OnLayerReordered |
圖層排序事件 |
|
PIE.AxControls.IMapControlEvents |
OnExtentUpdated |
視圖更新事件 |
OnResolutionUpdated |
視圖分辨率更新事件 |
項目路徑 |
百度雲盤地址下/PIE示例程序/02.地圖操做/02.地圖圖層控制/PIEMapLayerControlDemo |
數據路徑 |
百度雲盤地址下/PIE示例數據/柵格數據/04.World/World.tif |
視頻路徑 |
百度雲盤地址下/PIE視頻教程/02.地圖操做/03.地圖範圍設置和圖層事件監聽.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 } |