【openlayers】在 vue 中使用 ol

用户头像
学习委员
关注
发布于: 2020 年 05 月 31 日
【openlayers】在vue中使用ol

Openlayers 是一个模块化、高性能并且功能丰富的WebGIS客户端的JavaScript包,用于显示地图及空间数据,并与之进行交互,具有灵活的扩展机制。



简单来说,使用 Openlayers(后面简称ol) 可以很灵活自由的做出各种地图和空间数据的展示。而且这个框架是完全免费和开源的。



通过CDN引入和通过vue-cli的使用方式略有不同。



萌新刚接触 ol 会被很多新概念吓到,跟着敲慢慢就会学得懂。


首先通过vue脚手架初始化项目



vue create vue-ol



安装 Openlayers

cd vue-ol

npm install ol --save



先看效果(这是OSM底图的效果,实际开发中千万不能使用OSM

源码链接

这个效果图里展示了一个地图,并且中心点是深圳市。



<template>
<div class="vm">
<div id="map"></div>
</div>
</template>
<script>
/*
【1】
import 'ol/ol.css'
引入所需的css,这项是必须的。
【2】
import { Map, View } from 'ol'
引入 Map 和 View。这项也是必须的。
Map是一个地图容器,是最最最核心的部分。Map可以加载各类地图与功能控件,也用于渲染、表现动态地图。每一个地图都是一个Map对象。
View是地图视图,控制地图缩放等基础交互,以及地图投影坐标系、地图中心、分辨率、旋转角度等。
【3】
import Tile from 'ol/layer/Tile'
Tile翻译成中文就是“瓦片”。这项是必须的。
Tile用来承放所需的底图。
【4】
import OSM from 'ol/source/OSM'
OSM是ol提供的一个底图,可以作为练习使用。正式开发不能用OSM,因为OSM的中国边界有点问题。
*/
import 'ol/ol.css'
import { Map, View } from 'ol'
import Tile from 'ol/layer/Tile'
import OSM from 'ol/source/OSM'
export default {
name: 'FirstMap',
data () {
return {
map: null
}
},
methods: {
initMap () {
// 地图实例
this.map = new Map({
target: "map", // 对应页面里 id 为 map 的元素
layers: [ // 图层
new Tile({
source: new OSM() // 图层数据源
})
],
view: new View({ // 地图视图
projection: "EPSG:4326", // 坐标系,有EPSG:4326和EPSG:3857
center: [114.064839, 22.548857], // 深圳坐标
minZoom:10, // 地图缩放最小级别
zoom: 12 // 地图缩放级别(打开页面时默认级别)
})
})
}
},
mounted () {
// 在此生命周期阶段,调用 initMap 完成地图渲染
this.initMap();
}
}
</script>

这里省略了所有样式,只解释逻辑部分。



HTML部分



需要有一个元素作为地图容器,通常习惯使用 div 元素。



并且该元素需要有一个id属性,通过id属性,js就能绑定这个元素。



JS 部分



JS 部分的使用其实不难,通过 Map 实例出一个地图,但这是还什么都没有。



通过 target 选中页面上的目标元素



layers 是图层的意思。layers 是一个数组,其实和ps原理一样,可以通过多个图层来渲染出最终效果。这个例子里只有一个图层(即使只有一个图层也需要放在数组里),通过 Tile 拿到底图数据源 OSM



之后通过view,把地图的投影坐标系、地图中心点、地图初始缩放级别、地图最小缩放级别都规定好。



所以在Map里,必须有target、layers、view这三项。一个基础的地图就出来里。






最后需要提醒:实际开发中千万不能使用OSM。



点击获取本例源码(可关注码云长期更新)

发布于: 2020 年 05 月 31 日 阅读数: 239
用户头像

学习委员

关注

来自神秘邪恶反派组织的一名楼道保安。 2019.03.19 加入

【特殊技能:反派的笑声】

评论

发布
暂无评论
【openlayers】在vue中使用ol