一、轻量级的leaflet,轻在哪里?
leaflet/openlayers轻量级,那么轻在哪里(相比ArcGIS js,甚至Openlayers)?
查询分析:本身版本不支持属性查询、空间查询;(但可以其他GIS厂家已经开发出插件来支持)Leaflet 关于查询的总结
编辑功能:leaflet不支持编辑
服务类型:leaflet只支持OGC标准的WMS\WMTS服务,暂未看到其他服务;AGS全面支持且支持AGS独有的各项服务。
数据对象:对AGS的要素类等内置数据对象支持,例FeauteSet、Geometry、Symbol
可视化组件多:更丰富的视图组件,如图例、编辑控件等
动态修改渲染方式:AGS可以分级渲染等动态的修改样式,而leaflet的图层是否只能固定渲染方式?
AGS基于Dojo框架,一个比较大的框架,考虑了兼容多浏览器一致性。
leaflet默认只支持WGS 1984 Web Mercator (Auxiliary Sphere)坐标系的服务。
leaflet没有三维相关,AGS有,Openlayers包含了cesium
这里有个leaflet与openlayer的对比(可以类比与AGS)http://ivansanchez.github.io/leaflet-vs-openlayers-slides/#/
二、MapBox.js与Leaflet.js
原leaflet的团队似乎现在在为Mapbox工作。
leaflet没有OpenLayer那么复杂,专注性能和可用性,简单的API,精巧,移动支持。
MapBox.js与Leaflet.js主要的不同点:
1、Mapbox.js是Leaflet的一个插件,使用方式是通过结合leaflet使用。
2、mapbox-gl.js 则是使用WebGL技术独立渲染前端库,不需要结合其它渲染引擎(比如Leaflet、OpenLayer)来使用。
3、使用mapbox-gl.js的浏览器必须支持WebGL渲染,在老旧的浏览器中是不支持mapbox-gl.js的。而mapbox.js则没有此限制。
参考链接
三、OpenLayers概述
3.1OpenLayers核心职责
OpenLayers最新大版本是openlayers4,它是一个基于h5的GIS前端库,地图渲染方式为Canvas和WebGL,常用Canvas展示二维地图,支持WebGL渲染显示出将来的OpenLayers有支持三维方向的可能。OpenLayers作为一个地图前端库主要负责GIS数据的展示与交互。
OpenLayers仅仅是开源GIS框架中的前端部分,并不等于是GIS系统,所以很多非GIS专业的前端使用OpenLayers常常会出现很多误区,如社区中每隔几天就有人问的问题:
请问怎样用ol加载几百万点啊?我现在加载了感觉很卡。
请问ol能实现路径分析吗?ol能实现缓冲区分析吗?
提问的人忽略了ol的核心职责是展示与交互,实际项目中也不可能有将几千万几百万数据推到前端展示和交互的,一般这种都是后端渲染图刷到前端展示,或者使用矢量切片抽希数据到前端展示,正如普通的web开发中的表单需要分页查询和分页展示是一个道理。至于分析一般是服务端或者空间数据库负责分析,分析结果提交前端展示。业务常常是复杂的,但是每个工具的职责是清晰的,请将复杂的业务交由正确的工具去完成!
3.2 OpenLayers的定位
GIS前端渲染库除了OpenLayers还有LeafLet和ESRI公司的ArcGIS API,同样能支持地图的前端库还有百度api,高德api,谷歌api等,还有Echarts,D3.js等,初学者常常不能理解他们之间的关系。常常听人说,路径分析我就用高德API不就可以了吗?展示数据我用下Echarts不可以吗?仍然是一句话,选择什么样的工具,完全是依据实际业务需求而定的。当前和地图相关的库大概分类如下:
在线地图lbs服务:这类库的代表是百度api,高德api,谷歌api,主要特点是:公网环境,开发者需要申请key,key的地图请求服务有次数限制。地图数据和服务都是百度高德提供的,开发者常常是将业务有限的点(几个点,几十个点,几百个点等)定到地图上定个位置。开发中使用它们主要是如招聘网站上公司位置的一个定位,互联网应用中的lbs服务,如各种快递,外卖等app中附近的餐馆影院等。在企业和政府应用中,业务非常复杂,在线地图服务提供的数据不是我们要的,提供的服务不能满足我们的应用,所以实际上基本不会在企业开发中使用。LBS!=GIS。
数据可视化库:Echarts,D3.js主要作用是web端实现数据可视化的,提供丰富的图表等展示和交互,由于地图的使用越来越普及,所以不可避免的他们也会支持数据在地图上的展示。但主要定位仍然是数据可视化,在开发中,常常指定某个div,用来展示和交互下数据,属于页面的一小部分业务。而一般的综合指挥调度系统的地图是一个应用,加载非常多的图层,可以随时通过地图向地图单元发送指挥命令。page!=application。
GIS地图库:ol,LeafLet,arcgis api等都属于企业级地图应用开发库,彼此之间大同小异。稍微的差异是arcgis api需要arcserver提供服务,离开了server基本没任何优势。leaflet主要优势还是在开发的第三方控件比较多,但是兼容性比较差。且以“体积小,对移动端友好”为著称,在ol2的年代的确如此,但个人认为API的结构不如ol好,且ol3之后版本支持自定义打包,也支持移动端应用,ol4版本实现es6的import语法,实现按需加载,足以胜任开发大型GIS应用的要求。
综述:OpenLayers是GIS地图库,定位于开发GIS应用,而非地图页面,用于复杂的展示和交互用户数据。