OpenLayers简介
OpenLayers(https://openlayers.org/)是一个用来帮助开发Web地图应用的高性能的、功能丰富的JavaScript类库,可以满足几乎所有的地图开发需求。
有如下特点:
- 支持任何XYZ瓦片资源,同时也支持OGC的WMTS规范的瓦片服务以及ArcGIS规范的瓦片服务
- 支持矢量切片,包括pbf、GeoJSON、TopoJSON格式
- 支持矢量图层,能渲染GeoJSON、TopoJSON、KML、GML和其他格式的矢量数据
- 支持OGC制定的WMS、WFS等GIS网络服务规范
- 支持在移动设备上运行
- 可以通过css来为地图控件设置样式
- 面向对象开发方式,在OpenLayers中万物皆对象
和另一个流行的地图库leaflet不同,openLayers完全是用面向对象的方式开发的,且几乎内置了所有地图开发需要的功能,而leaflet核心库只提供基本功能,其他功能都是通过第三方插件进行扩展。使用上来说leaflet更容易上手,OpenLayers上手难度比较大,所以业务可预见较为简单的建议采用leaflet。
OpenLayers虽然很强大,但是因为一切皆对象,所以使用起来很麻烦,再加上无比难看的文档,所以对新手极其不友好,这也是本系列文章的初衷,旨在基于实际业务开发的场景下来沉淀一些内容,来帮助新手使用OpenLayers。
这是本系列的第一篇,主要介绍地图的实例化、基本的要素操作,后续不定期更新。
本文基于OpenLayers v6+版本,代码基于Vue。
安装
npm i ol
实例化地图
要显示一个基本的地图首先需要提供一个容器,设置好宽高,然后引入OpenLayers,添加一个地图图层,地图服务可以使用内置的一个开源地图OSM,也可以使用其他的在线瓦片服务,比如:百度、高德、天地图、必应、谷歌等,具体服务地址可以自行百度,本文使用的是高德的服务,详情可参考:https://www.jianshu.com/p/e34f85029fd7。
<div class="ol-map" ref="olMap"></div>
import Map from 'ol/Map'
import View from 'ol/View'
import { Tile as TileLayer } from 'ol/layer'
import {XYZ, OSM} from 'ol/source'
import { fromLonLat } from 'ol/proj'
// fromLonLat方法能将坐标从经度/纬度转换为其他投影
// 使用内置的OSM
//const tileLayer = new TileLayer({
// source: new OSM()
//})
// 使用高德
const tileLayer = new TileLayer({
source: new XYZ({
url: 'https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={