MapX 控件在C# 中的应用 (一)_blue_bat的博客-程序员宝宝

技术标签: c#  components  system  工具  windows  object  

 

 

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

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

 

/*

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

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

 *

 * 杨雨田 [email protected]

 */

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);

       }

    }

}

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Blue_Bat/article/details/9827

智能推荐

电力系统潮流计算c加加语言指南,第三章简单电力系统的潮流计算汇总_工程师李涛的博客-程序员宝宝

1、第一章 简单电力系统的分析和计算一、 基本要求掌握电力线路中的电压降落和功率损耗的计算、变压器中的电压降落和功率损耗的计算;掌握辐射形网络的潮流分布计算;掌握简单环形网络的潮流分布计算;了解电力网络的简化。二、 重点内容1、 电力线路中的电压降落和功率损耗图3-1中,设线路末端电压为、末端功率为,则(1)计算电力线路中的功率损耗 线路末端导纳支路的功率损耗: (3-1)则阻抗支路末端的功率为:...

2020年天梯赛真题——L2-3 完全二叉树的层序遍历_白鹿贞松的博客-程序员宝宝

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。输入格式:输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。输出格式:在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得有

黑马程序员--网络编程_weixin_30780221的博客-程序员宝宝

端口号的范围:0-65535,其中0-1024系统已经占用,例如:WEB端口:80;mysql端口:3306;tomcat:8080;在网络通信里,  1、传输层协议:    TCP协议,类似于打电话(下载)      1.建立连接,创建连接两端的通道(通过三次握手)      2.适合传输大数据      3.可靠地      4.由于需要建立连接,效率低...

淘宝在数据处理领域的项目及开源产品介绍_weixin_30739595的博客-程序员宝宝

淘宝在数据存储和处理领域在国内互联网公司中一直保持比较靠前的位置,而且由于电子商务领域独特的应用场景,淘宝在数据实时性和大规模计算及挖掘方面一直在国内保持着领先,因此积累了很多的实践的经验和产品。TimeTunnel基于Hbase打造的消息中间件,具有高可靠、消息顺序、事务等传统特性,还能按时间维度反复订阅最近历史的任意数据高性能的broker,单节点达2万TPS,实际支持上千长链...

android怎么自动获取权限不弹窗,android-su-without-dialog_weixin_39752352的博客-程序员宝宝

举例:runasroot的用法,首先到download runasroot下载,需要经过赋予权限,root用户组所有,可执行,拷贝到/system/bin,再切换到普通用户,然后就万事大吉,可以在普通shell里面执行需要root权限才能执行的命令$adb push runasroot /data/local/tmp/$adb [email protected]:/data/local/tmp ...

6-3 Add Two Polynomials(20 分)_四月~的博客-程序员宝宝

6-3 Add Two Polynomials(20 分)Write a function to add two polynomials. Do not destroy the input. Use a linked list implementation with a dummy head node. Note: The zero polynomial is represented by an ...

随便推点

echarts 自定义配置带单位的 tooltip 提示框方法 和 圆环数据 tooltip 过长超出屏幕..._weixin_33889245的博客-程序员宝宝

-------tip1--------在 tooltip 里边配置:拼接字符串;tooltip : { trigger: 'axis', formatter:function(params) {     var relVal = params[0].name; for (var i = 0, l = params.length; i...

SVN使用教程之-分支/标记 合并 subeclipse_weixin_34072637的博客-程序员宝宝

http://energykey.iteye.com/blog/512745首先说下为什么我们需要用到分支-合并。比如项目demo下有两个小组,svn下有一个trunk版。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版【主...

Eigen与matlab的比较_汤姆与贝塔的博客-程序员宝宝_eigen matlab

Eigen和Matlab比较// 参考 - http://eigen.tuxfamily.org/dox/AsciiQuickReference.txt// 一个关于Eigen的快速参考// Matlab和Eigen的对应用法// Main author: Keir Mierle// 注释:张学志#include Eigen/Dense>Matrixdouble, 3, 3>

集群_weixin_33753003的博客-程序员宝宝

何为集群?百度上面的解释就已经够了:集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群的作用:1.提高性能 2.降低成本 3.提高可扩展性 4.增强可靠性这4点很好理解,所以从这4点作用来看我们可以把集群分为三类:1.超级计算集群 2.负载均衡集群 3.高可用...

网站上传图片提示错误怎么办_qq_1547479934的博客-程序员宝宝_图片请求上传接口出现异常

网站上传图片出现错误,或错误提示原因1:99%是图片太大,可以换个图片,或者将图片压缩一下试试原因2:图片格式问题, 上传的格式不在允许范围。原因3:国外服务器, 网络卡顿,连接超时导致的上传错误,不排除存在其他问题的可能性,不同问题处理方法不同。...

Python输出时出现乱码“�밴���������. . . ”的解决方案_xgc0102的博客-程序员宝宝_python 命令行输出乱码

输出时出现“�밴���������. . . ”乱码解决方案左上角File下点击Setting...点击File Encodings修改Global Encoding为GBK重新运行程序不再出现乱码

推荐文章

热门文章

相关标签