WebGIS入门实战(03):WebGIS 开发常用的地图JS库 (持续更新中)
本章主要介绍目前行业上流行的,有些用户基数的地图JS库,主要有:ArcGIS API for JavaScript、OpenLayers、Leaflet 、Mapbox、maptalks.js等。额外还介绍一些可视化前端统计图表库,因为 在GIS行业,很多公司有做数据统计,或者做 大数据的项目,图表展示是必不可少的。
ArcGIS API for JavaScript
ArcGIS API for JavaScript 是 ESRI 公司针对ArcGIS产品,提供基于Web的JavaScript地图库,目前版本已经更新到4.10 ,支持开发2D,3D的地图web app,详情介绍见官方首页。以下是简 单列举ArcGIS API for JavaScript主要的功能API。

从图中可以看出,地图视图支持2D/3D,3D的效果主要是 SceneView 类提供。然后到地图图层Layers,提供了丰富的类和接口,各种各样的图层要素,Graphic还是Geometry,还是栅格、 图片等都应有尽有,我们可以通过这些接口去绘制图形或者展示图层元素、符号渲染等。在工具组件Widgets提供了常用的控件,比如地图的缩放,测量,打印等等;查询检索 Tasks 里边就是 比较高级的分析功能了,这些分析功能大多基于地图服务,有最短路径分析,缓冲区分析,几何分析,空间要素查询等等。ArcGIS 软件里边有的分析功能,相信ESRI都会慢慢的搬运到Web 中实现,就如同云端的ArcGIS。
总结,如同ArcGIS Desktop系列软件在GIS业界的口碑一样, ArcGIS API for JavaScript 提供的功能实现接口很强大,毕竟ESRI是GIS行业的领头者。缺点可能就是商业要付费的,对于商业 使用需要购买版权。对于个人非商业使用和学生学习来说,可以免费随意使用。不管怎么样,你要是走WebGIS开发方向,此JS库你是必然要学习了解一下的。
OpenLayers
OpenLayers 是业界比较出名的开源JavaScript地图库,早期版本叫openlayers2(简称ol2),在3.0版本后经过重写过,就默认为OpenLayers3,简称ol3,源码开源,见 githubopenlayers/openlayers,以下简称为ol。
Openlayers的优势在于开源免费,也提供了简单方便的api,二维地图上的功能,ol基本都可以实现,满足用户的要求,因为开源,所以业界使用得比较多,国内较多的公司都会选择ol去二 次开发,封装定制,或者说是模仿ol的实现,自己搞一套,比如超图、天地图就是如此。
ol本身没有提供3D的功能,但官方团队有提供基于 ol+ Cesium的三维实现,开源仓库见ol3-cesium。(Cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,可以简单认为是 一个Web端的三维球,然后提供了一些接口去展示渲染模型和地图要素)。
总结,GIS业界的公司,一般想多赚一些钱的话,都会选择自己整一套平台出来,所以,很多会选择ol,而更少的选用ArcGIS系列。OpenLayers也是作为 WebGISer 必学的JS库。
Leaflet.js
Leaflet 是一款轻量级,用于移动友好交互式地图的JavaScript库。轻量级的意思就是代码总大小比较小。Leaflet利用HTML5和CSS3在现代浏览器上的优势,同时也可以在旧浏览器上访 问。它可以通过大量插件进行扩展,具有漂亮的、易于使用的、文档丰富的API,使用上也比较简单。
同 OpenLayers 一样,开源就会有更多的人选择,另外 Leaflet 轻量易用的特性,使得很多Web应用或者GIS应用在做简单的地图展示的时候,都会优先选择。
总结,如果你是初学者,你选择Leaflet先学习可能会更容易上手做WebGIS应用,轻量易用,也有较多的开源插件,方便集成使用。
Mapbox
Mapbox专注于Mobile与Web应用的地图体验,有自己定义的地图样式、地图业务,该公司也创建开源了很多的开源工具,同时也专注于Web GL方向,比如Mapbox GL在3D GIS渲染上效果很好。可以认为 Mapbox 是 Leaflet 的一个超级,增强版。官方提高包装好的移动端SDK集成,文档也比较详细,对开发者友好。一些使用Mapbox开发的地图可视化的DEMO也比较酷炫。
maptalks.js
maptalks.js也给大家介绍一下,专注于2D/3D地图可视化,可以官方多了解。
其他地图JS库
超图也有自己得一套,之前说了超图根据参考openlayers自己实现一套地图JS库,同理天地图。其他的还有百度地图API、高德地图API、腾讯地图API,这些网络地图也可以开发一些基本的 WebGIS系统,对应的官方文档也有在线demo体验效果,可以多了解一下。在一些非专业做WebGIS应用的其他行业,基本都会选择以上三者之一去对接地图功能,比如导航、POI兴趣点搜索(商家、景点)这些,因为高德地图这种网络地图接口,提供了很多基础数据,类似道路,学校点、商家、景点等,这种数据要自己搞到并一直维护最新是很高的成本的,所以偏这种功 能分享的应用,基本都选择这三家网络地图做对接,也比较简单和满足要求。个人选择喜好优先级:高德地图> 百度地图> 腾讯地图。
可视化图表库
可视化图表库常用有 Echarts、Highcharts、Chart.js、G2、D3.js等。其中Echarts和G2是国内的,分别是百度和阿里,Highcharts商业使用需要收费,其他都是免费。Echarts出来的毕竟早,推荐 优先使用,D3.js的话多用于复杂图形和3D可视化效果。如截图是使用Echart实现的一个大数据展示大屏页面。

大数据大屏系统
本章小结
本章主要介绍了ArcGIS API for JavaScript、OpenLayers、Leaflet、Mapbox、maptalks.js等地图JS库的特点,让开发人员有基本的了解认识,选择自己合适的JS库去学习练手。这里给开发者的建议是,选择自己喜欢的就行,程序开发思想最后都是相通的,初级、中级开发工程师,主要是锻炼自己的编程能力和编码逻辑思维、以及业务思维,不管哪个JS库,只要你很熟悉其一,理解够了,你转向使用别的JS库上手也是比较快的。做系统、项目开发的时候,会根据真实的业务场景,选择解决业务的技术方案,可能是解决业务技术的痛点,也可能是为了省钱赚更多的钱。总之都是有目的的去选型的,初学者的目标就是把技术用熟练,举一反三,结合业务锻炼自己,当你有足够的能力去思考技术选型,你会看透这些JS库。
本章主要介绍目前行业上流行的,有些用户基数的地图JS库,主要有:ArcGIS API for JavaScript、OpenLayers、Leaflet、Mapbox、maptalks.js等。额外还介绍一些可视化前端统计图表库,因为 在GIS行业,很多公司有做数据统计,或者做大数据的项目,图表展示是必不可少的。
(持续更新中.....)