PIE SDK地圖鼠標事件監聽

 

1.功能簡介

   地圖鼠標事件包含鼠標的按下MouseDown(),彈起MouseUp(),移動MouseMove()等事件,經過這些事件能夠對地圖進行動態的操做,接下來以地圖狀態欄的信息爲例具體介紹如何使用 這三種事件。ide

2.功能實現說明

2.1. 實現思路及原理說明

第一步:右鍵程序主界面控件-》屬性-》點擊事件(⚡符號)-》找到鼠標模塊this

  

第二步:找到對應的事件在表格出直接回車鍵或者雙擊就能夠進入到代碼模塊(例如鼠標點擊事件在MouseDown的第二列回車或者雙擊便可)spa

第三步:根據事件寫入相應的功能代碼code

2.2. 核心接口與方法

接口/類orm

方法/屬性視頻

說明blog

 

PIE.AxControls.MapControl教程

ToMapPoint接口

屏幕座標轉換爲地圖座標事件

SpatialReference

設置或獲取地圖的空間參考

PIE.Geometry.ISpatialReference

Name

設置或獲取空間參考Name

2.3. 示例代碼

項目路徑

百度雲盤地址下/PIE示例程序/02.地圖操做/06.地圖鼠標事件監聽

數據路徑

百度雲盤地址下/PIE示例數據/柵格數據/04.World/World.tif(自定義數據便可)

視頻路徑

百度雲盤地址下/PIE視頻教程/02.地圖操做/06.地圖鼠標事件監聽.avi

示例代碼

 1       //本次示例主要以地圖的狀態欄
 2       /// <summary>
 3         /// 鼠標按下事件
 4         /// </summary>
 5         /// <param name="sender"></param>
 6         /// <param name="e"></param>
 7         private void mapControlMain_MouseDown(object sender, MouseEventArgs e)
 8         {
 9             MessageBox.Show("鼠標按下事件");
10             PIE.Geometry.IPoint point = new PIE.Geometry.Point();
11             //將屏幕座標轉換爲地圖座標
12             point = mapControlMain.ToMapPoint(e.X, e.Y);          
13             //彈出座標信息顯示框
14             string srcgreenCoor = string.Format("屏幕座標:X:{0},Y:{1}", e.X, e.Y);
15             string mapCoor = string.Format("地圖座標:X:{0},Y:{1}", point.X.ToString(), point.Y.ToString());      
16             MessageBox.Show(srcgreenCoor + "\r\n" + mapCoor, "屏幕座標轉換地圖座標");
17 
18             int x=0, y=0;
19             mapControlMain.FromMapPoint(point,ref x,ref y);
20             string tempPoint = string.Format("屏幕設備點:X:{0},Y:{1}",x,y);
21             MessageBox.Show(mapCoor+"\r\n"+tempPoint, "地圖座標轉換爲設備點");
22         }
23 
24         /// <summary>
25         /// 鼠標移動事件
26         /// </summary>
27         /// <param name="sender"></param>
28         /// <param name="e"></param>
29         private void mapControlMain_MouseMove(object sender, MouseEventArgs e)
30         {          
31             //一、當地圖空間參考爲空時,鼠標移動不起做用            
32             int layerCount =mapControlMain.FocusMap.GetAllLayer().Count;
33             if (layerCount < 1)
34             {
35                 mapControlMain.SpatialReference = null;
36             }
37             ISpatialReference spatialReference = mapControlMain.SpatialReference;
38             if (spatialReference == null)return;
39             this.label_SpatialReference.Text=spatialReference.Name.ToString();
40             //二、鼠標移動的屏幕座標
41             this.label_SrcgreenCoordinate.Text=string.Format("{0},{1}",e.X,e.Y);
42             //三、鼠標移動的地圖座標
43             IPoint point = mapControlMain.ToMapPoint(e.X, e.Y);
44             this.label_MapPoint.Text=string.Format("{0},{1}", point.X.ToString("0.0000"), point.Y.ToString("0.0000"));         
45         }
46 
47         /// <summary>
48         /// 鼠標彈起事件
49         /// </summary>
50         /// <param name="sender"></param>
51         /// <param name="e"></param>
52         private void mapControlMain_MouseUp(object sender, MouseEventArgs e)
53         {
54             MessageBox.Show("鼠標彈起事件");
55         }
View Code

2.4. 示例截圖

相關文章
相關標籤/搜索