OpenLayers3框架结构


发布日期 : 2017-01-23 07:34:33 UTC

访问量: 487 次浏览

MetaCarta公司设计OpenLayers的目的,就是为了能够在客户端更好地展现和操作地图。 OpenLayers将抽象事物具体化为类,其核心类是Map、Layer、Source、View, 几乎所有的动作都围绕这几个核心类展开, 以实现地图加载和相关操作。OpenLayers3的体系架构示意图如图所示。

由OpenLayers3的体系架构示意图可见:把整个地图看作一个容器(Map), 核心为地图图层(Layer)、对应图层的数据源(Source)与矢量图层样式(Style)、 地图表现相关的地图视图(View), 除此之外容器中还有一些特别的层和控件(如地图交互操作控件), 以及绑定在Map和Layer上的一系列待请求的事件。 底层是OpenLayers的数据源,即Image、GML、KML、JSON、OGC服务资源等, 均为source与format命名空间下的子类,这些数据经过Renderer渲染, 显示在地图容器中的图层Layer上。其中,地图容器(Map)与图层(Layer)的渲染, 提供了Canvas、DOM、WebGL三种渲染类型,分别由ol.renderer.Map与ol.renderer.Layer实现。

对比OpenLayers2,从OpenLayers3的体系架构中可看出版本3重构后与版本2的重要区别。 从结构上看,主要区别如下。

(1)OpenLayers3将地图图层(Layer)与数据源(Source)分离, 并将地图视图相关类(如投影、分辨率、中心点设置等)抽离为视图(View), 地图数据的加载显示更为灵活。

(2)OpenLayers3将地图交互操作相关内容抽离, 封装为各类交互操作控件(Interactions), 如涉及地图交互的要素选择、绘图,以及图形要素编辑的操作、缩放、拖动、旋转等。

(3)OpenLayers3在地图容器中用叠加层(Overlays) 来承载和表现诸如地图标注(Marker、Popup)等HTML元素内容。

(4)OpenLayers3优化了空间几何结构类(Geometry), 相比之前的版本其应用更为简便,易用性好。

(5)地图渲染机制不同,OpenLayers3将地图图层数据渲染、矢量要素渲染分离, 地图渲染支持Canvas、DOM、WebGL渲染方式, 矢量要素渲染支持Canvas、WebGL渲染方式。 另外,新版本的地图图层数据渲染器(Renderer)将数据请求的相关处理封装在内部。