MapX 控件在C# 中的应用 (一)

关键字:MapX,C#,Net,ActiveX控件

 

/*

* 在这段代码中,我们应用MapX控件结合老美地图做了最基本的

* 地图浏览功能:放大、缩小、拖动、全图、测量距离、测量面积。

*

* 杨雨田 YangYutian@Hotmail.Com

*/

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace wa

{

public class frmMain : System.Windows.Forms.Form

{

private AxMapXLib.AxMap mapMain;

private double MapZoom;

private double CenterX;

private double CenterY;

private System.Windows.Forms.StatusBar sbMain;

private System.Windows.Forms.MainMenu mainMenu;

private System.Windows.Forms.MenuItem miMap;

private System.Windows.Forms.MenuItem miMapToolZoomIn;

private System.Windows.Forms.MenuItem miMapToolZoomout;

private System.Windows.Forms.MenuItem miMapToolPan;

private System.Windows.Forms.MenuItem miMapToolRestore;

private System.Windows.Forms.MenuItem miMapToolDistance;

private System.Windows.Forms.MenuItem miMapToolArea;

private System.Windows.Forms.MenuItem miMapTool;

private System.ComponentModel.Container components = null;

public frmMain()

{

InitializeComponent();

}

protected override void Dispose( bool disposing )

{

//略

}

#region Windows 窗体设计器生成的代码

private void InitializeComponent()

{

//略

}

#endregion

[STAThread]

static void Main()

{

Application.Run(new Form1());

}

private void mapMain_PolyToolUsed(object sender, AxMapXLib.CMapXEvents_PolyToolUsedEvent e)

{

if(e.toolNum == 99)//测量距离

{

MapXLib.Points pts = (MapXLib.Points)e.points;

MapXLib.Point pt1,pt2;

double d=0.0;

//计算顺序两个点距离,累计得到总距离

for(int i=1;i<pts.Count;i++)

{

pt1=pts.Item(i);

pt2=pts.Item(i+1);

d += mapMain.Distance(pt1.X,pt1.Y,pt2.X,pt2.Y);

}

sbMain.Text = "距离:" + d.ToString();

}

else if(e.toolNum == 98)//面积

{

MapXLib.Points pts = (MapXLib.Points)e.points;

//偷懒了但是很正确

MapXLib.FeatureFactory dd = mapMain.FeatureFactory;

MapXLib.Style style = mapMain.DefaultStyle;

sbMain.Text = "面积:" + dd.CreateRegion(pts,style).Area.ToString();

}

}

private void miMapToolZoomIn_Click(object sender, System.EventArgs e)

{

//放大

mapMain.CurrentTool = MapXLib.ToolConstants.miZoomInTool;

}

private void miMapToolZoomout_Click(object sender, System.EventArgs e)

{

//缩小

mapMain.CurrentTool = MapXLib.ToolConstants.miZoomOutTool;

}

private void miMapToolPan_Click(object sender, System.EventArgs e)

{

//拖动

mapMain.CurrentTool = MapXLib.ToolConstants.miPanTool;

}

private void miMapToolRestore_Click(object sender, System.EventArgs e)

{

//缩放到初始大小(全图)

mapMain.ZoomTo(this.MapZoom,this.CenterX,this.CenterY);

}

private void miMapToolDistance_Click(object sender, System.EventArgs e)

{

//测量距离

mapMain.CurrentTool = (MapXLib.ToolConstants)99;

}

private void miMapToolArea_Click(object sender, System.EventArgs e)

{

//测量面积

mapMain.CurrentTool = (MapXLib.ToolConstants) 98;

}

private void frmMain_Load(object sender, System.EventArgs e)

{

//记录地图的比例合中心点

this.MapZoom = mapMain.Zoom;

this.CenterX = mapMain.CenterX;

this.CenterY = mapMain.CenterY;

//创建测量距离的工具

mapMain.CreateCustomTool(99,(short)MapXLib.ToolTypeConstants.miToolTypePoly,MapXLib.CursorConstants.miCrossCursor,MapXLib.CursorConstants.miCrossCursor,MapXLib.CursorConstants.miCrossCursor,false);

//创建测量面积的工具

mapMain.CreateCustomTool(98,(short)MapXLib.ToolTypeConstants.miToolTypePolygon,MapXLib.CursorConstants.miCrossCursor,MapXLib.CursorConstants.miCrossCursor,MapXLib.CursorConstants.miCrossCursor,false);

}

}

}

 

 

MapX 控件在C# 中的应用 (一)相关推荐

  1. 确定多重选择列表控件 (List Control) 中的选定内容

    确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...

  2. android 获取控件在屏幕中的坐标

    今天,简单讲讲android如何获取控件在屏幕中的坐标. 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做.所以在网上查找了资料后,解决了这个问题.这里记录 ...

  3. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

  4. vue element 控件之 el-container中的el-side 与 el-main 的间距怎么设置

    vue element 控件之 el-container中的el-side 与 el-main 的间距怎么设置 效果: 如图所示,当我们在页面中同时使用el-container中的el-side 与 ...

  5. MFC CStatic控件在DrawItem中自绘

    转载自:也已时过境迁的MFC CStatic控件在DrawItem中自绘 实现PreSubclassWindow void CStaticHref::PreSubclassWindow() { // ...

  6. Qt项目UI文件中新添加的控件在代码中不识别的问题

    ui->XXXX 在UI界面中新添加了控件,但是在代码中怎么也不出现,或者划红线 我看不少人说备份删除文件再添加,或者关闭QT再打开... 其实只要右键项目清除构建,然后重新构建就可以了, 这有 ...

  7. VLC控件在JavaScript中视频字幕编辑

    VLC控件在JavaScript中视频字幕编辑: 主要是遇到再js脚本中添加视频的处理,但对于视频显示的内容想做更多的信息提示,故加载字幕提示: vlc=document.getElementById ...

  8. 利用tab_control控件在对话框中加入属性页的方法详细介绍

    在对话框中加入属性页 方案一 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab C ...

  9. Android得到控件在屏幕中的坐标

    getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标 getLocationInWi ...

最新文章

  1. Java死锁示例–如何分析死锁情况
  2. 我的Google Adsense帐户被关
  3. keil5图标变成白色_电脑桌面图标全部变成白色的解决办法
  4. python源代码现成重用大全
  5. 对!这就是你要的pandas练习题(❤️❤️)
  6. jenkins 手动执行_Jenkins环境配置篇-增加节点
  7. android 阻塞式函数,Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题...
  8. 樊登高效休息法读书心得_读书时间丨高效休息法:让身体和大脑彻底放松的七个方法...
  9. oracle同时删除一行数据,oracle 多表删除 同时删除多表中关联数据
  10. 【优化预测】基于matlab飞蛾扑火算法优化LSSVM预测【含Matlab源码 110期】
  11. Eplan绘图软件:Eplan P8 2.9 SP1破解
  12. wps重复上一步快捷键_Wps重复命令快捷键
  13. javaweb 锐浪报表导出文件,并上传服务器解决方案
  14. 【 机器学习】入门,理论框架以及学习资料
  15. 饥荒如何解锁机器人_《饥荒》全部人物怎样解锁 全人物解锁条件及方法一览...
  16. 7天内我面试了10家公司,如何从命中率0%到命中率至70%?
  17. 酒店:二维码如何应用于酒店管理
  18. 五年了还在原地踏步咋整?技术大佬给你整理了一套切实可行的方法论
  19. 云时代编程语言Ballerina发布,TIOBE9月排行榜PHP排名在边缘飘摇(2019/09/16)
  20. Apache安装和配置详细

热门文章

  1. 使用pip安装模块时提示: No module named pip
  2. 《K3 WISE常用数据表整理》
  3. 分享Android单元测试
  4. div设置滚动条和滚动条属性
  5. 2015年度中国智能路由器市场监测报告
  6. Provides transitive vulnerable dependency org.yaml:snakeyaml:1.33
  7. OverFeat——全卷积首次用于检测问题 (目标检测)(深度学习)(ICLR 2014)
  8. 如何设计好一个接口?
  9. jdk8在win10的安装,添加JAVA_HOME环境变量
  10. Linux中opengl库叫什么名字,Linux下的OpenGL——Mesa和GLX简介