zoukankan      html  css  js  c++  java
  • PIE SDK地图鼠标事件监听

    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         }
    View Code

    2.4. 示例截图

     

  • 相关阅读:
    跨DLL边界传递CRT对象的隐患(或诸如:HEAP[]: Invalid Address specified to RtlValidateHeap(#,#)问题出现的原因)
    【策略模式】不同的时间用不同的规则优先考虑策略模式
    【装饰模式】遵循开闭原则,使用一个类装饰另一个类
    【简单的工厂模式】一个简单的计算器
    【原】使用Golang语言编写echo程序
    WebBrowser或CHtmlView中轻松屏蔽脚本错误(JavaScript)
    春运买票难,是谁造成的?
    搜狗输入法使用感受
    [原]在 go/golang语言中使用 google Protocol Buffer
    防护针对SQL Server数据库的SQL注入攻击
  • 原文地址:https://www.cnblogs.com/PIESat/p/10243823.html
Copyright © 2011-2022 走看看