OpenLayers3框架结构


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

访问量: 517 次浏览

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)将数据请求的相关处理封装在内部。