PIE SDK地图范围设置和图层事件监听

 

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. 示例截图

 

猜你喜欢

转载自www.cnblogs.com/PIESat/p/10242784.html
pie
今日推荐