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

原创 2004年06月10日 10:35:00

 

 

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

       }

    }

}

 

 

C#进行MapX二次开发之MapX基础知识

C#进行MapX二次开发之MapX基础知识 MapX的主要技术特点 (1)、 以表(Table)的形式组织信息 每一个表都是一组MapInfo文件,这些文件组成了地图文件和数据库文件。为...
  • Gdou_YUN
  • Gdou_YUN
  • 2016年11月25日 19:24
  • 1081

比较完善的C#中调用mapx教程

  • 2010年08月21日 19:31
  • 741KB
  • 下载

Mapx 具体使用方法

MapX5.0地图量测代码 2008年11月13日 星期四 22:13 利用多边形工具:wMap.CurrentTool = ( MapXLib.ToolConstants ...
  • meeweed
  • meeweed
  • 2012年04月26日 12:43
  • 3714

我使用的MapX小心得

0 申明变量  CMapX           m_ctrlMapX;  CMapXLayer    m_objLayer;//运动目标图层  CMapXLayer    m_traceL...
  • tiger9991
  • tiger9991
  • 2012年08月16日 00:01
  • 2347

c#中调用mapx5.0

这是 我在.net环境中调用mapx5.0控件 的一次test,前几次网上没有发现这方面的文章,所以自己 把几个代码拿出 来:这里有些代码是自动生成的,但只要把几篇文章的代码直接拷贝到工程里 就 能直...
  • snjdju
  • snjdju
  • 2010年08月02日 22:14
  • 696

如何在c#中使用mapx50

  • 2007年07月27日 13:51
  • 11KB
  • 下载

模拟车辆行驶软件 (CSharp2.0 + MapX4.51)

  • 2009年10月21日 22:49
  • 426KB
  • 下载

csharp+mapx

  • 2012年08月23日 10:43
  • 752KB
  • 下载

c# mapx

  • 2008年07月30日 19:28
  • 190KB
  • 下载

MapX 控件在C# 中的应用

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 03:13
  • 244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MapX 控件在C# 中的应用 (一)
举报原因:
原因补充:

(最多只允许输入30个字)