阅读:1813回复:2
[分享]用C#建立手机上的电子地图程序(Mobile GIS)
<P>引言:本文将介绍如何使用C#建立手机上的电子地图程序(Mobile GIS),本程序可以在手机上显示ESRI公司的.SHP格式地图文件。本程序代码下载:<a href="http://www.k-work.cn/download/Product/HiMap/myHiMap.zip" target="_blank" ><FONT color=#000000>myHiMap.zip</FONT></A></P>
<P>一、系统需求:<BR>开发环境:Windows XP, .NET Compact Framework 2.0, Windows Mobile 5 SDK, <a href="http://www.k-work.cn/download/Product/HiMap/HiMapBeta1-Runtime.zip" target="_blank" ><FONT color=#000000>HiMap Beta1 runtime</FONT></A><BR>运行环境:DOPOD D600手机 (Windows Mobile 5.0)</P> <P>二、程序功能列表:</P> <P>1、添加图层----Add Layers<BR>2、设置图层----Setup Layers<BR>3、放大----ZoomIn<BR>4、缩小----ZoomOut<BR>5、漫游----Pan<BR>6、全图----Full Extent<BR>7、前一视图----Previous Extent<BR>8、后一视图----Next Extent <BR>9、测距----Distance<BR>10、信息查询----Information<BR>11、定位点坐标----Position</P> <P>三、开发步骤</P> <P>1、在<a href="http://www.k-work.cn/pages/HiMapPages/ch/download.html" target="_blank" ><FONT color=#000000>http://www.k-work.cn/pages/HiMapPages/ch/download.html</FONT></A>下载<a href="http://www.k-work.cn/download/Product/HiMap/HiMapBeta1-Runtime.zip" target="_blank" ><FONT color=#000000>HiMap Beta1 runtime</FONT></A>,得到HiMapBeta1-Runtime.zip,解压缩得到"HiMap.Carto.dll, HiMap.Driver.dll, HiMap.Geometry.dll, HiMap.MapControls.dll, HiMap.Style.dll, KMGisLib.dll"。</P> <P>2、运行Microsoft Visual Studio 2005(以下简称VS2005),在文件菜单中选择:新建->项目</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/创建项目.jpg"></P> <P>3、在[新建项目]对话框中选择Visual C#->智能设备->Windows Mobile 6 Professional->Device Application->在[名称(N)]文本框中输入"myHiMap"->确定</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/创建myHiMap项目.jpg"></P><BR> <P>4、在[解决方案资源管理器]窗口中,鼠标右键点击[引用],选择[添加引用]。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/选择DLL.jpg"></P> <P>5、添加成功后,将看到如下内容:</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/向myHiMap添加引用2.jpg"></P> <P>6、在[工具箱]窗口使用鼠标右键点击空白处,在弹出的菜单中选择[选择项]。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/向myHiMap添加控件项1.jpg"></P> <P>7、在[选择工具项]窗口中,点击[浏览]按钮。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/选择控件项.jpg"></P> <P>8、在[打开]窗口中,找到并选中“HiMap.MaoControls.dll”文件,点击[打开]按钮。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/定位到控件dll.jpg"></P> <P>9、在[选择工具箱项]窗体中,点击[确定]按钮。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/向myHiMap添加控件项2.jpg"></P> <P>10、添加成功后,左侧[工具箱]中将出现如下这些控件。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/向myHiMap添加控件项3.jpg"></P> <P>11、在[工具箱]中找到“MapControl”控件,将其拖动到Form1.cs[设计]窗口中,并将其[Dock属性设置为Fill]。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap使用控件.jpg"></P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/将控件dock属性设置为fill.jpg"></P> <P>12、在"namespace myHiMap"上方添加"using HiMap.Carto;"和" using HiMap.Driver;"的引用。</P> <P>using HiMap.Carto;<BR>using HiMap.Driver;</P> <P>13、为Form1.cs窗体添加"Form1_Load"事件,并填写以下代码</P> <P>private void Form1_Load(object sender, EventArgs e)<BR>{</P> <BLOCKQUOTE> <P>//建立新的地图对象<BR>Map map = new Map("test");</P> <P>//使用Shape驱动建立元数据工厂<BR>IDataFactory dataFactory = new HiMap.Driver.Shape.ShapeDataFactory("Storage Card");<BR>//打开一个元数据<BR>IFeatureClass featureClass = (IFeatureClass)dataFactory.Open("One.shp");<BR>//通过元数据建立矢量图层<BR>IFeatureLayer featureLayer = new FeatureLayerClass(featureClass);</P> <P>//将图层添加到地图对象中<BR>map.AddLayer(featureLayer);<BR>//地图控件绑定地图对象<BR>mapControl1.Map = map;<BR>//刷新显示地图<BR>mapControl1.MapRefresh();</P></BLOCKQUOTE> <P>}</P> <P>14、将Windows Mobile 5.0 for Pocket PC或Windows Mobile 6 Professional的移动设备(本示例使用的是Windows Mobile 5.0 for Pocket PC的dopod D600手机)通过Microsoft ActiveSync(本示例使用的是4.5.0版本)与当前使用的PC连接。<BR><STRONG>注意:</STRONG>由于建立项目时选择的是"Windows Mobile 6 Professional"平台,所以现在要将平台转换为适应当前设备的"Windows Mobile 5.0 Pocket PC"平台。<BR>在VS2005的[解决方案资源管理器]中,用鼠标右键单击项目[myHiMap],在弹出的菜单中选择[更改目标平台],并选择"更改为:Windows Mobile 5.0 Pocket PC SDK",点击[确定]按钮。在弹出的询问是否继续窗口中点击[是]按钮。最后,在VS2005的[设备]工具条中选择"Windows Mobile 5.0 Pocket PC Device"。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap更改目标平台.jpg"></P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap更改目标平台2.jpg"></P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap更改目标平台3.jpg"></P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap更改目标平台4.jpg"></P> <P>15、在VS2005的[解决方案资源管理器]中,用鼠标右键单击项目[myHiMap],在弹出的菜单中选择[部署]。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap部署.jpg"></P> <P>16、部署成功后,将HiMapBeta1-Runtime.zip解压缩后得到的KMGisLib.dll文件拷贝到移动设备的"\Program Files\myhimap"目录中。或者使用VS2005自带的部署功能将其复制到程序目录下。</P> <P>17、将地图文件"One.shp,One.shx,One.dbf"(<a href="http://www.k-work.cn/download/Product/HiMap/maps.zip" target="_blank" ><FONT color=#000000>地图文件下载</FONT></A>)通过Microsoft ActiveSync或存储卡拷贝到移动设备的"\Storage Card"目录下(如果没有此目录,请手动建立)。</P> <P> <P>18、在VS2005中,点击[启动调试]按钮。</P> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/ch/images/myHiMap启动调试.jpg"></P> <P>19、运行成功,如图:</P> <P> <DIV forimg="1"><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5.jpg" border=0></DIV> <P>20、为窗体添加菜单和功能。如图:</P> <P> <DIV forimg="1"> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_2.jpg" border=0></P> <P>21、为这些方法添加实现的代码,如ZoomIn菜单项的代码:</P> <P> /// <summary><BR> /// ZoomIn Tool<BR> /// </summary><BR> /// <param name="sender"></param><BR> /// <param name="e"></param><BR> private void menuItem4_Click(object sender, EventArgs e)<BR> {<BR><BR> //放大工具<BR> HiMap.MapControls.Tools.ITool cmd = new HiMap.MapControls.Tools.ToolZoomIn();</P> <P> //初始化工具<BR> cmd.OnCreate(this.mapControl1);</P> <P> //激活此工具为当前工具<BR> this.mapControl1.CurTool = cmd;<BR> }</P> <P>22、其他功能的代码请参考源文件:<a href="http://www.k-work.cn/download/Product/HiMap/myHiMap.zip" target="_blank" ><FONT color=#000000>myHiMap.zip</FONT></A>,最终运行结果如图:</P> <P> <P> <DIV forimg="1"> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_3.jpg" border=0></P> <P> <DIV forimg="1"> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_4.jpg" border=0></P> <P> <DIV forimg="1"> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_5.jpg" border=0></P> <P> <DIV forimg="1"> <P><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_6.jpg" border=0></P> <P> <DIV forimg="1"> <P><a href="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_7.jpg" target="_blank" ><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_7.jpg" border=0></A></P> <P> <DIV forimg="1"><IMG src="http://www.k-work.cn/pages/HiMapHelp/en/images/HiMapRunSuccessfullyInWM5_8.jpg" border=0></DIV></DIV></DIV></DIV></DIV></DIV></DIV><BR> |
|
1楼#
发布于:2008-11-10 21:02
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em08.gif" /><img src="images/post/smile/dvbbs/em02.gif" />加油!
|
|
2楼#
发布于:2008-11-18 11:04
<P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /></P>
<P>最近在做警务通系统, 谢谢楼主!!!!!</P><img src="images/post/smile/dvbbs/em01.gif" /> |
|