1.1 MapGuide API
MapGuide是一个三层架构的Web GIS系统,所以MapGuide API也分为了两大类:服务器端API和客户端API,如图3-1所示。
1.1.1 服务器端API
服务器端API也称之为MapGuide Web API,它是运行在Web应用服务器上的一系列类的集合,通过这些API可以实现创建地图,查询、更新和分析地图数据等功能。为了支持不同类型的开发和部署环境,MapGuide Web API提供了Java、.NET和PHP三种语言类型的API,这三种语言类型的API提供了完全相同的功能,只是语法上有所区别。按照实现功能的不同,我们可以将MapGuide Web API分为图3-1所示的模块。
l 通用类(Common):提供了一些通用类,这些类是实现其它类的基础,例如MgObject、MgDisposable、MgColor、MgByteReader等。其中,MgObject是MapGuide Web API中其它所有非常量类的基类。
l 集合类(Collection):提供了一些集合类,例如MgCollection、MgStringCollection、MgIntCollection等,这些集合类不是线程安全的,集合中的元素按照插入的顺序排序。其中,MgCollection是所有集合类的基类。
l 异常类(Exception):提供了MapGuide能够抛出的所有异常类,MgException是所有异常类的基类。
l 空间参考系类(Coordinate System):提供了用于获取空间参考系的定义信息、对坐标值进行坐标转换、测量两个坐标值间距离等功能的类。
l 几何对象类(Geometry):提供了创建和读写二维和2.5维几何对象,以及对几何对象进行分析的类。
l 要素类(Feature):提供了定义一个要素类和要素类中所有属性需要用到的类,例如MgFeatureClassDefinition、MgPropertyDefinition和MgProperty等。
l 地图和图层类(Maps and Layers):提供了创建和访问地图和图层所需的类,例如MgMap、MgLayer和MgLayerGroup等。
l 站点服务(Site Service):用于配置用户、用户组和用户Session。
l 资源服务(Resource Service):用于操作资源库和资源。
l 渲染服务(Rendering Service):用于将地图渲染为图像,让用户使用AJAX Viewer或Fusion Viewer来浏览地图。
l 地图服务(Mapping Service):用于将地图创建为eMap格式的DWF文件,让用户可以使用DWF Viewer来浏览地图,或者将地图创建为ePlot格式的DWF文件用于打印。
l 制图服务(Drawing Service):提供了访问存储在DWF数据源中的DWF数据的功能。
l 要素服务(Feature Service):用于操作要素源中的要素数据。
l 分块服务(Tiling Service):用于将地图分割为固定大小的图像块,并且将这些图像缓存在MapGuide服务器上,当用户使用AJAX Viewer缩放或移动地图时,能够提供更好的性能。
l KML服务(KML Service):用于将地图发布为KML,用户可以使用Google Earth作为客户端来浏览MapGuide服务器提供的地图。
图3-2 MapGuide Web API的构成
在Autodesk开发MapGuide Web API之时,内部开发人员为了便于对这些API进行测试,开发了一个基于Web的测试工具,它可以测试大部分服务类API。事实上,在MapGuide的安装版中也提供了这个工具。在浏览器的地址栏中输入如下的地址,就可以打开这个工具,
开源版MapGuide | http://mapguide_server:port/mapguide/mapagent/index.html |
企业版MapGuide | http://mapguide_server:port/mapguide_xxxx/mapagent/index.html |
它的用户界面如图3-3所示。上面的地址中,“mapguide_server”代表MapGuide Web扩展所在的服务器,“port”代表Web应用服务器的端口号,“xxxx”代表MapGuide的版本号。这个工具也是一个非常好的API学习工具和MapGuide应用程序调试工具,通过在网页上输入方法的所需的参数,可以非常方便和直观地看到方法的执行结果。
图3-3 MapGuide Web Tier Tester
1.1.2 客户端API
对于胖客户端,MapGuide Studio和MapGuide Maestro提供了API用于定制它们的用户界面和功能。
对于瘦客户端,MapGuide提供了Viewer API,它由一组运行在浏览器的JavaScript函数组成,用于配合MapGuide Viewer和用户进行交互,通过这些API可以实现诸如缩放、平移、选择、打印等功能。非常遗憾的是,因为不同类型的Viewer基于完全不同的技术框架,所以不同类型的Viewer提供了完全不同的API,这对于MapGuide的二次开发造成了一定的不便。相对于其它类型的Viewer,Fusion Viewer能提供更加灵活和强大的功能,所以Autodesk将主要的精力用于改进Fuision Viewer,也建议用户使用Fusion Viewer。