1.功能简介
地图鼠标事件包含鼠标的按下MouseDown(),弹起MouseUp(),移动MouseMove()等事件,通过这些事件可以对地图进行动态的操作,接下来以地图状态栏的信息为例具体介绍如何使用 这三种事件。
2.功能实现说明
2.1. 实现思路及原理说明
第一步:右键程序主界面控件-》属性-》点击事件(⚡符号)-》找到鼠标模块
第二步:找到对应的事件在表格出直接回车键或者双击就可以进入到代码模块(例如鼠标点击事件在MouseDown的第二列回车或者双击即可)
第三步:根据事件写入相应的功能代码
2.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
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 + " " + 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+" "+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 //1、当地图空间参考为空时,鼠标移动不起作用 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 //2、鼠标移动的屏幕坐标 41 this.label_SrcgreenCoordinate.Text=string.Format("{0},{1}",e.X,e.Y); 42 //3、鼠标移动的地图坐标 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 } |
2.4. 示例截图