前段时间接到BOSS一个任务:要在一个桌面应用程序中加入地图的显示,这个地图要能够支持缩放,支持描点划线,支持经纬度的栅格显示,支持轨迹的描绘,后期还要支持在地图上进行手工描点,规划路径等功能,对于这个需求,我的理解是一个可视化系统,需要拿GIS来定制一下(我有考虑Google Map 或者Goolgle earth,但是这个桌面程序不要求能接入Internet)。于是乎我在网上苦苦的追寻,终于找到一个基于window平台的Active X控件(接触过VB啊、MFC 啊、C#啊的人们应该都知道这种控件吧)名字叫---MapWinGis.这个控件是开源的,像其他小众的开源库一样,这个控件在互联网上的资料也十分稀少,关于MapWinGis的博客来来回回就那么一两篇,还各种转载!当然我们来学习这个控件的最好方式是去读它官方主页的文档,而我在使用这个控件所实现的功能,大部分也是按照文档开实现的,但我觉得仅仅是官方文档还远远不够,在使用文档过程中,我们还是会遇到各种各样的问题,所以今天我想写一个自己的探索过程,记录下我在使用这个控件过程中遇到的点点滴滴,期望给后来人一点启发,文章中有什么不正确、不确切的地方还希望大家多指正。
============================================
=======同时我想声明一下我的工作平台=============
============================================
操作系统:win 7
使用的编程语言: C#
IDE: VS Express 2013 For Desktop
---------------记于本系列博客写作之前
第一篇文章,我们先瞄准第一个需求:在桌面应用程序中使用MapWinGis控件加入地图元素。
在使用MapWinGis控件之前,我们必须先下载这个控件并安装它:
下载地址:https://mapwingis.codeplex.com/releases/view/541892
一定要看清楚下载的是MapWinGis控件,这个组织还针对地理信息系统使用者提供了一个应用程序,不要下载了这个。
下载完以后进行安装工作,跟其他在window平台下的安装程序一样,如下图:
然后根据界面提示(如选择安装路径什么的),安装即可。
安装完毕后要在window平台对这个控件进行注册,以便于后来的使用。
假设我安装在了如下路径:C:\dev\MapWinGIS
在这个目录下有一个“regMapWinGIS.cmd”的文件双击它即可完成注册过程。
接下来我们就要在程序中使用它了:
1.首先在VS Express 2013中创建一个基于C#的window窗体应用程序,然后在菜单栏里选择"项目菜单"下的“添加引用”选项。
然后在打开的选项卡的右侧找到咱们的控件--MapWinGis Components
单击“确定”。
接着我们需要将这个控件添加到工具箱中,以便以后使用:“工具箱”-->"常规" 右键---->“COM组件选项卡”,找到“Map Control”勾选此项添加即可。
这样,控件就添加到工具箱中了,像使用其他控件一样,我们从工具箱中拖拽一个MapWinGis到窗体中就完成了控件的添加工作。(大体的样子如下图,我将控件属性设置为了fill,也是就填满整个窗体,这个无关紧要)
这个时候我们就可以使用这个控件对象来进行编码工作啦!!我们要显示一个地图,那么我们可以直接在Form_load事件中添加代码(因为咱们先试验性的实现一些功能,请读者自动忽略掉不符合工程规范的编码内容,嘎嘎~)。
int intHandler;//声明一个句柄,为以后生成图层句柄做准备
//声明一个Shapefile类型的对象(实例化)
MapWinGIS.Shapefile shapefile = new MapWinGIS.Shapefile();
//使用这个对象就可以打开一个地图类型的文件(一个shapefile文件),注意文件的路径
shapefile.Open(@"E:\Yums\program\map\data\ne_50m_admin_0_countries.shp", null);
//调用axMap1对象的添加图层方法就将地图显示在了界面上
intHandler = axMap1.AddLayer(shapefile, true);
到此我们就可以显示一个地图在桌面应用程序中。
另:我们需要提前准备一些shapefile文件。