一、矢量地图简介
前面介绍的瓦片地图将地理信息以一块块瓦片的形式进行组织并渲染,瓦片的本质是图片,因此不能对瓦片地图进行修改样式、空间分析等操作,而且瓦片不包含属性信息,隐含的空间信息也不能直接获取使用。
矢量数据使用矢量数据模型来组织地理信息,矢量数据模型采用离散对象来表示地球表面的空间要素,因此,简单来说,矢量数据包含了各个地理要素的空间坐标与属性信息,这使我们能对地理信息进行细粒度的使用与操作。
常用的矢量数据格式有GeoJSON、TopoJSON、KML、GML、shapfile等等。
在WebGIS中,使用矢量数据构成的地图被称为矢量地图,矢量地图的原理就是将包含坐标信息与属性信息的矢量数据发送到客户端,然后由客户端负责绘制矢量图层。
响应速度与交互性是矢量地图的优点,一旦从服务器获得了矢量数据,Web地图用户与数据的交互就会非常迅速,不会有任何延迟。另外,矢量图形无论进行放大、缩小或旋转等操作,图形都不会失真。
矢量地图的缺点是不能同时绘制成百上千个要素,因为矢量地图的主要操作都在客户端,所以数据量变大,客户端就会卡、慢,甚至可能崩溃。
二、在OpenLayers中直接组织矢量数据
在OpenLayers中,ol.source.Vector类是矢量数据源基类,为矢量图层ol.layer.Vector类提供具体的数据来源,包括直接组织或读取的矢量数据(ol.Feature类)、远程数据源的矢量数据(即通过url设置数据源路径)等。
现在我们来尝试直接在OpenLayers中组织矢量数据然后构建矢量地图:
directOrganizeVector.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>直接组织矢量数据</title&