GIS地图开发(二) - GIS地图开发
五、 封装地图
有了坐标转换类、图层类、图层列表类,就可以利用它们做出一个具有缩放平移、图层管理等功能的地图了,但为了更方便地对地图进行操作,还需要对这些类进行组合封装。新建一个类WeatherMap,添加Coordinator和LayerList类的实例作为它的属性,为了更符合大家操作习惯,将Coordinator类的实例作为私有成员,将地图坐标转换等方法加入WeatherMap类,也就是说地图坐标转换中,不访问Coordinator,而要调用WeatherMap类的方法。类图如下:
再回到抽象图层类CustomLayer,它有一个成员Map,即为WeatherMap对象,在将图层加入图层列表时会自动赋值。在编写CustomLayer的子类时,可调用它来进行坐标转换和地图操作。
为了使地图在绘制复杂图形过程中不至于假死,并在绘图过程中能随时中断绘图,如快速缩放平移地图中可终止前次绘图过程直接绘制最后一次,地图绘制使用了多线程,但多线程增加了代码编写难度,特别是多线程操作UI,对程序流程造成了一定混乱,程序结构受到影响,所幸并不会对图层代码造成困难。
六、 再次封装-增加UI
上面已完成了地图绘制的核心代码,为了使代码编写更加容易,需要对WeatherMap类再次进行封装(MapView类),加入UI部分,即给地图加一个具有界面的壳,并在上面实现地图的操作如缩放、拖动功能。
MapView从PictureBox类继承,内建了WeatherMap类的实例,在MapView的Refresh()方法中调用WeatherMap.Render()对地图进行绘制。
为了完成对地图的操作,FreeMicaps定义一个IMapTool接口,包含了鼠标和键盘操作方法,MapView类内建一个IMapTool接口成员,MapView的鼠标和键盘操作,将被IMapTool接口的实例接管,在实现IMapTool接口的类中,可对地图做各种操作,如平移、缩放等操作,这个对象可随时替换以实现不同方式的地图操作。在FreeMicaps中,已完成一个实现IMapTool接口的类ZoomTool,此类为默认的地图缩放和平移工具。IMapTool接口类图如下:
另外,在MapView中,还引入了一个当前图层的概念CurrentLayer,用它来表示当前操作的图层,后面用它来实现图层元素拾取、图层工具条等功能。
MapView类图如下:
七、 总览
地图部分类关系图如下:
地图绘制部分活动图如下:
以上已经介绍完FreeMicaps地图部分设计框架,相信大家的已对设计思路已有一定了解,此框架不仅适用于天气图分析软件,也适用于一般的GIS系统。本文仅对FreeMicaps的地图部分框架进行了介绍,未涉及到具体的地图数据读取及绘制,这些将在下一篇文章中介绍。
- 第 1 页:GIS地图开发
- 第 2 页:GIS地图开发(二)
本文导航
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
相关阅读:
- [电子说] 中易云GIS场景信息管理平台提供强大的空间分析功能 2023-10-21
- [可编程逻辑] 基于FPGA系统Register和Memory的复位 2023-10-09
- [电子说] GIS组合电器安装事项 2023-09-26
- [电子说] 润和软件HopeStage与超图软件 GIS平台完成产品兼容性互认证 2023-09-25
- [电子说] 浅析C语言中的regiseter关键字 2023-08-25
- [电子说] 变电站GIS室内六氟化硫气体泄露报警监测系统的应用方案 2023-08-16
- [电子说] 分布式应急指挥中心方案 2023-08-16
- [电子说] 助力GIS配电室气体减排--六氟化硫SF6气体在线监测报警系统 2023-07-19
( 发表人:彭菁 )