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

示例代码

       //本次示例主要以地图的状态栏
/// <summary>
/// 鼠标按下事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mapControlMain_MouseDown(object sender, MouseEventArgs e)
{
MessageBox.Show("鼠标按下事件");
PIE.Geometry.IPoint point = new PIE.Geometry.Point();
//将屏幕坐标转换为地图坐标
point = mapControlMain.ToMapPoint(e.X, e.Y);
//弹出坐标信息显示框
string srcgreenCoor = string.Format("屏幕坐标:X:{0},Y:{1}", e.X, e.Y);
string mapCoor = string.Format("地图坐标:X:{0},Y:{1}", point.X.ToString(), point.Y.ToString());
MessageBox.Show(srcgreenCoor + "\r\n" + mapCoor, "屏幕坐标转换地图坐标"); int x=, y=;
mapControlMain.FromMapPoint(point,ref x,ref y);
string tempPoint = string.Format("屏幕设备点:X:{0},Y:{1}",x,y);
MessageBox.Show(mapCoor+"\r\n"+tempPoint, "地图坐标转换为设备点");
} /// <summary>
/// 鼠标移动事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mapControlMain_MouseMove(object sender, MouseEventArgs e)
{
//1、当地图空间参考为空时,鼠标移动不起作用
int layerCount =mapControlMain.FocusMap.GetAllLayer().Count;
if (layerCount < )
{
mapControlMain.SpatialReference = null;
}
ISpatialReference spatialReference = mapControlMain.SpatialReference;
if (spatialReference == null)return;
this.label_SpatialReference.Text=spatialReference.Name.ToString();
//2、鼠标移动的屏幕坐标
this.label_SrcgreenCoordinate.Text=string.Format("{0},{1}",e.X,e.Y);
//3、鼠标移动的地图坐标
IPoint point = mapControlMain.ToMapPoint(e.X, e.Y);
this.label_MapPoint.Text=string.Format("{0},{1}", point.X.ToString("0.0000"), point.Y.ToString("0.0000"));
} /// <summary>
/// 鼠标弹起事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mapControlMain_MouseUp(object sender, MouseEventArgs e)
{
MessageBox.Show("鼠标弹起事件");
}

2.4. 示例截图

最新文章

  1. 如何获取ResultSet的行数和列数
  2. C/C++二维数组的用法
  3. AngularJS启动过程分析
  4. 【未完待补充】linux 设置So动态库链接路径
  5. c 计算 语句 执行 时间
  6. Lua I/0输入输出
  7. decode()与case then 学习与使用
  8. java_log4j 经典配置
  9. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出
  10. Docker &amp; ASP.NET Core (1):把代码连接到容器
  11. 处理JavaScript异常的正确姿势
  12. 树莓派3B安装LEDE
  13. PHP使用文件锁解决高并发问题示例
  14. kubernetes集群搭建(4):node节点安装
  15. hadoop append 追加文件错误
  16. Unity接入监控摄像头
  17. keepalive和脑裂问题
  18. 【Jersey】图片上传及显示
  19. &amp;quot;《 Serial Drivers 》by Alessandro Rubini&amp;quot; 学习笔记
  20. Element-ui组件--pagination分页

热门文章

  1. [GO]二维数组的介绍
  2. libtool: syntax error near unexpected token `]*
  3. 第07章-Spring MVC 的高级技术
  4. MySQL性能调优与架构设计——第3章 MySQL存储引擎简介
  5. 20145218张晓涵_Exp5 MSF基础应用
  6. 在云主机后台进行python程序运行
  7. 「BZOJ 2809」「APIO 2012」Dispatching「启发式合并」
  8. 基于CAS的单点登录实战(1)-- 搭建cas服务器
  9. 【bzoj3670】: [Noi2014]动物园 字符串-kmp-倍增
  10. kill 进程的一些小细节