1. 程式人生 > >PIE SDK地圖範圍設定和圖層事件監聽

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