MapX 控件在C# 中的应用 (一)
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# 中的应用 (一)相关推荐
- 确定多重选择列表控件 (List Control) 中的选定内容
确定多重选择列表控件 (List Control) 中的选定内容 依次通过控件的 Items 集合,分别测试每一项的 Selected 属性. 下面的示例显示如何测试多重选择 ListBox 控件(名 ...
- android 获取控件在屏幕中的坐标
今天,简单讲讲android如何获取控件在屏幕中的坐标. 这个其实也很简单,但是昨天做一个功能时,需要功能控件的坐标做一些逻辑操作时,居然不知道怎么做.所以在网上查找了资料后,解决了这个问题.这里记录 ...
- GridView控件RowDataBound事件中获取列字段值的几种途径
前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...
- vue element 控件之 el-container中的el-side 与 el-main 的间距怎么设置
vue element 控件之 el-container中的el-side 与 el-main 的间距怎么设置 效果: 如图所示,当我们在页面中同时使用el-container中的el-side 与 ...
- MFC CStatic控件在DrawItem中自绘
转载自:也已时过境迁的MFC CStatic控件在DrawItem中自绘 实现PreSubclassWindow void CStaticHref::PreSubclassWindow() { // ...
- Qt项目UI文件中新添加的控件在代码中不识别的问题
ui->XXXX 在UI界面中新添加了控件,但是在代码中怎么也不出现,或者划红线 我看不少人说备份删除文件再添加,或者关闭QT再打开... 其实只要右键项目清除构建,然后重新构建就可以了, 这有 ...
- VLC控件在JavaScript中视频字幕编辑
VLC控件在JavaScript中视频字幕编辑: 主要是遇到再js脚本中添加视频的处理,但对于视频显示的内容想做更多的信息提示,故加载字幕提示: vlc=document.getElementById ...
- 利用tab_control控件在对话框中加入属性页的方法详细介绍
在对话框中加入属性页 方案一 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab C ...
- Android得到控件在屏幕中的坐标
getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标 getLocationInWi ...
最新文章
- Java死锁示例–如何分析死锁情况
- 我的Google Adsense帐户被关
- keil5图标变成白色_电脑桌面图标全部变成白色的解决办法
- python源代码现成重用大全
- 对!这就是你要的pandas练习题(❤️❤️)
- jenkins 手动执行_Jenkins环境配置篇-增加节点
- android 阻塞式函数,Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题...
- 樊登高效休息法读书心得_读书时间丨高效休息法:让身体和大脑彻底放松的七个方法...
- oracle同时删除一行数据,oracle 多表删除 同时删除多表中关联数据
- 【优化预测】基于matlab飞蛾扑火算法优化LSSVM预测【含Matlab源码 110期】
- Eplan绘图软件:Eplan P8 2.9 SP1破解
- wps重复上一步快捷键_Wps重复命令快捷键
- javaweb 锐浪报表导出文件,并上传服务器解决方案
- 【 机器学习】入门,理论框架以及学习资料
- 饥荒如何解锁机器人_《饥荒》全部人物怎样解锁 全人物解锁条件及方法一览...
- 7天内我面试了10家公司,如何从命中率0%到命中率至70%?
- 酒店:二维码如何应用于酒店管理
- 五年了还在原地踏步咋整?技术大佬给你整理了一套切实可行的方法论
- 云时代编程语言Ballerina发布,TIOBE9月排行榜PHP排名在边缘飘摇(2019/09/16)
- Apache安装和配置详细
热门文章
- 使用pip安装模块时提示: No module named pip
- 《K3 WISE常用数据表整理》
- 分享Android单元测试
- div设置滚动条和滚动条属性
- 2015年度中国智能路由器市场监测报告
- Provides transitive vulnerable dependency org.yaml:snakeyaml:1.33
- OverFeat——全卷积首次用于检测问题 (目标检测)(深度学习)(ICLR 2014)
- 如何设计好一个接口?
- jdk8在win10的安装,添加JAVA_HOME环境变量
- Linux中opengl库叫什么名字,Linux下的OpenGL——Mesa和GLX简介