《Web GIS原理与应用开发》读书笔记(6)

第六章 使用Web地图API访问地图服务

以下均掺杂个人理解
书目:Web GIS 原理与应用开发 —— 刘光 曾敬文 曾庆丰 著

6.1 Web地图API

API:Application Programming Interface,应用程序接口。是编写程序的一个框架,包含了一组封装了底层代码的类与功能。

API并不是一种编程语言,只是某种语言或者某些语言可调用的一组类和功能

6.1.1 Web地图API的选择

  • 运行在移动端或者pc端
  • 应用程序或者是浏览器查看
  • 开发与维护的难度
  • 开源API或者是商业API
  • 等等方面

6.1.2 主要FOSS类型的Web地图API

6.1.2.1 Openlayers

Openlayers采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。

较为成熟,虽然文档较难理解,但是有大量的实例,还有社区。

6.1.2.2 Leaflet

小巧方便,易于上手,在移动设备上有良好的体验。

强调使用切片地图以及客户端的矢量图绘制

实例较少

6.1.2.3 D3

常用于绘制图表

将数据绑定到页面的DOM(文档对象模型)上,然后应用数据驱动转换到文档(页面元素),从而实现数据灵活地动画与变换效果。

6.1.2.4 Polymaps

在地图风格化方面有一个类似于CSS的选择器

6.1.3 主要的商业Web地图API

6.1.3.1 谷歌地图与必应地图API
6.1.3.2 ArcGIS APIs

6.2 使用Web地图API的基本步骤

虽然API使用方法不尽相同,每种API都是自己的优点和缺点,但是这个API都有一些通用模式与过程。

该方式为HTML页面引用方式,若使用框架开发,还需了解框架的具体操作方法。

6.2.1 引用Javascript与样式文件

在使用前,需要在html的head标签内,对API进行引用。

需要注意的是:引用的js越多,页面加载时间越长(页面的js是通过网络请求获取到的)

引用API的方式

  • 将API下载并部署到自己的服务器上,这样做的好处是将加载时间减到最小,而且可以自定义API。
  • 引用他人服务器上的API。内容分发网络(Content Delivery Network ,CDN)站点专门用于存储通用API。

对于Web地图API,在引用js文件的同时,一般会有配套的样式文件(css)需要引用。

6.2.2 地图div与对象

在创建地图对象前,需要在页面创建一个div元素,用于显示地图,一个div对应一个地图对象,一般通过id属性进行绑定。

6.2.3 Layer对象

在某种意义上,图层就代表WMS或者切片地图的一个Web服务,它本身也可以包含许多数据图层

图层对象通常是一个抽象类,提供一系列通用的属性方法,开发人员不能直接对其进行实例化,而是实例化它的子类(如ArcGIS APIs中的WMSLayer、FeatureLayer、GraphicsLayer等等)

创建好Layer对象后,不要忘记将其添加至地图对象中

6.2.4 图层样式化机制

对于从服务端获取的地图元素来说,样式已经提前定义好了,而对于在客户端动态绘制的地图元素,我们需要为其定义样式,API会提供一些定义样式的方法,包括符号、填充颜色、填充样式等等。

6.2.5 事件与交互元素

最常用的交互有两类,一类为鼠标或键盘事件,一类为图层显示控制

API会提供地图的事件监听,创建监听对象时可以定义事件发生的回调函数

图层显示控制即控制某个图层的显示与隐藏。需要注意的是,切片服务无法控制内部某个图层,只能控制整体

6.2.6 异步处理

在Web地图API中,大部分操作都是异步的,这就要求我们处理好代码运行的先后问题。

若没有处理好,在运行过程中通常会出现的状况是某结果变量为undefined。

最基础的解决方案是在回调函数中定义回调函数,若回调过长会出现回调地狱,大大降低代码可阅读性。

较好的解决方案为使用promisepromise配合es6的async函数

有些API也提供链式调用的方案。

你可能感兴趣的:(webgis)