最近在学习ArcGIS Engineer开发的鹰眼视图的开发,经过一段时间的学习,写出了一个能跑起来的代码,只能说我尽力了,代码还有待完善,希望各位能够给予意见。
1、设计窗体的功能
因为鹰眼视图使用的是mapcontrol控件,所以需要多加一个地图控件。而对于鹰眼视图,我想不仅仅有显示全景地图的功能,还可以在鹰眼视图上用矩形框标注出来当前查看的区域在这个地图中的位置。所以不仅需要编写鹰眼视图的代码,还需要编写地图放大缩小、鹰眼视图矩形框的显示代码。
这是窗体设计的样子,有鹰眼视图的控件,有地图放大、缩小、漫游的工具栏。
2、代码部分
代码部分,我就是按照常规的编程方式,先添加引用空间,再开始按照视频的讲解,编写代码。
话不多说,请看代码。
现在有很多关于ArcGIS Engineer开发的书籍,都会讲解鹰眼视图的代码开发,但是书籍上由于篇幅的限制,只能提到不按键部分的代码,我这个新手小白看到还是一知半解,所以直接把代码发出来跟搭大家分享。
代码分为两个部分,一个是关于工具栏的代码书写,一个是关于鹰眼视图的代码编写。
工具栏的代码主要用到了TCommand和ITool这两个接口,利用if语句使工具的选择必须保持只能选定一个工具的状态,避免工具选择混淆。
而鹰眼视图的代码必须呢,通过利用axmapcontrol1控件的事件触发机制,把axmapcontrol2控件的事件和axmapcontrol1控件的事件绑定起来,在控件1接受数据的时候,让控件2也接受一样的数据,这样就可以保持两个地图控件的数据是同步的。
而添加鹰眼视图的矩形框时,利用mapcontrol控件1的事件,把地图当前区域的范围更新到mapcontrol2控件上,并用一个Element把这个范围标注到鹰眼视图上去,调整这个矩形框的透明度和外框线的颜色。这样,当地图放大、缩小或者移动时,就可以在鹰眼视图上通过矩形框知道大致的范围了。
3、程序的运行测试
当程序运行的时候,可以实现工具栏的添加数据、地图放大、缩小和地图漫游的功能;而鹰眼视图中也可以正常显示地图全景,并且在地图控件显示的区域小于地图全景的时候,可以在鹰眼视图上用一个红边矩形框表现当前的显示范围。