引言
# 介绍
OpenLayers是一个用于开发WebGIS客户端的JavaScript包或者开源地图框架项目,其目的是为了互联网客户端提供强大地图可视化能力,包括地图数据显示和地图交互等,并具有灵活拓展机制。
不过要注意一点就是OpenLayers仅仅是WebGIS的前端,不包含后端。因为在某些应用场景下,比如数据量特别大,有百万标记,那么不适合把数据直接传输到前端渲染,而是要在后端制图,然后再根据地图位置范围和缩放等级通过图片的方式传输到前端并展示。常见用于后端制图的工具有GeoServer、MapServer、ArcServer、iServer等。
# 体系架构
OpenLayers是MetaCarta公司设计的一个模块化、高性能且功能丰富的WebGIS客户端的JS库,用于显示地图和空间数据库以及交互操作。支持OGC
指定的WMS
、WFS
等服务规范,可以通过远程服务的方式,将以OGC服务规范发布的地图数据服务加载到基于浏览器的客户端中显示。它所支持的数据格式有XML、JSON、GeoJSON、MVT、GML、GPX、KML、WFS、WKT等。
MVT(Mapbox -Vector-Tile):Mapbox矢量瓦片是Mapbox公司2013年推出的一个开源的矢量瓦片规范,它提供了一种超快速、高效的格式,强化了地图在交互特性、GeoJSON数据流、移动端渲染等方面的性能。
目前Openlayers
的最新版本是7.x,默认情况下,使用经过性能优化的Canvas
渲染器,同时也支持WebGL
渲染器。
Openlayers
在调用地图服务进行显示的时候,主要通过其几个核心类(Map、Layer、Source、View等)完成。
从上图看出ol
把地图Map
作为一个容器,包含用来渲染图层的Layer
、加载底层数据的Source
、控制地图视图(分辨率、设置地图中心、分辨率、和旋转)的View
、定义数据坐标参考的Projection
、渲染矢量数据的Style
、常用的控件Controls
、用于在显示地图上显示信息窗口用叠加层Overlayers
以及与用户交互相关的Interaction
和地图事件MapEvent
。