李泉 陈玉进 (南京跬步科技有限公司http://www.creable.cn )
局部模块设计
下列类图中黑色菱形箭头表示组合关系,空行三角箭头表示继承关系,虚线箭头表示依赖关系,空心菱形箭头表示聚合关系。曲线相连表示该类被使用在某个模块中。
1.Controls模块设计
本模块的目的在于提供一个完整的前台控件类,方便用户使用GridGIS Mobile电子地图引擎。图2为Controls模块的UML类图。MapControl类定义了电子地图控件的外观及当前地图工具等信息,其中包括一个重要的Map属性,此属性是控制获取地图要素的入口。地图工具MapTool类定义为一个抽象类供用户派生自己的地图工具,而MapControl中统一将地图工具视为MapTool类来管理,达到扩展功能的目的。用户程序可以通过定义自己的类,并实现ICustomDraw接口,再挂接到MapControl对象中,即可实现自绘制图层,例如GPS动态图层等效果。
2.Display模块设计
GIS对各个地图要素的表现至关重要,地图的表现力是GIS电子地图引擎是否受欢迎的重要因素之一。Display模块提供一个全局惟一的Display类来实现对地图要素的实时绘制和自动标注,客户程序可以通过使用该类的方法自己在地图窗口中绘制相应的元素。DisplayTransformation类负责完成实际坐标与设备坐标之间的转换,该类与Display类之间是组合的关系,Display类中仅包含一个惟一的DisplayTransformation类。FeatureRenderer虚类使用在FeatureLayer这种图层中,用于对地图渲染方式的定义,它的子类SimpleRenderer能够完成将一个FeatureLayer使用单一符号样式来渲染绘制的功能。另一个子类UniqueValueRenderer实现同一图层不同样式的渲染。Symbol虚类是所有符号样式的父类,定义了符号样式共同的特性,也为方便在FeatureRenderer中管理不同类别的符号样式提供了统一的方式。MarkerSymbol是一种对点状地图要素的符号样式,LineSymbol描述线状地图要素,FillSymbol描述面状地图要素而TextSymbol用于描述特殊的地图文字要素。FeatureRenderer和Symbol使用Bridge模式提供扩展性能,方便编写新的渲染规则和符号样式。读者可以参看图3所示的UML类图来理解这一模块的设计思想与设计方法。