Vue+OpenLayers入门(加载OSM在线地图)

1、初始化Vue项目

此处不再赘述,不会初始化的请移步:如何搭建一个vue项目(完整步骤)
多说一句,完成vue项目的初始化后,可以在App.vue中修改代码如下(为何要这样修改,后面代码中的注释会描述):

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
html, body, #app { 
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}
</style>
2、安装Openlayers库

(示例使用的ol版本是6.7.0)

npm install ol -S
// 或者
yarn add ol -S
3、代码
<template>
  <div class="map-box" id="map-box" ref="mapBox"></div>
</template>
<script>
import 'ol/ol.css';
import Map from 'ol/Map';
import View from 'ol/View';
import {Tile} from 'ol/layer';
import OSM from "ol/source/OSM";
export default {
  data() {
    return {
      map: null, // 用来存储map对象
    }
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      this.map = new Map({
        layers: [
          new Tile({
            source: new OSM(), // OSM在线瓦片地图
          })
        ],
        view: new View({
          center: [104.06, 30.67], // 成都
          zoom: 10, // 设置初始化时的地图缩放层级
          projection: 'EPSG:4326', // 坐标系
          maxZoom: 18, // 最大缩放层级
          minZoom: 6, // 最小缩放层级
        }),
        target: 'map-box', // 地图dom
      });
    }
  }
}
</script>
<style>
.map-box {
  /* 若不在App.vue中设置html、body的width和height,此时这样写div高度则为0,地图不会显示 */
  width: 100%;
  height: 100%;
}
</style>

若不修改App.vue中的样式,则map-box的样式可以设置如下:

<style>
.map-box {
  width: 100vh;
  height: 100vh;
}
</style>
4、效果图:

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 和 OpenLayers 都是非常流行的前端技术,可以很好地结合在一起使用。你可以使用 Vue.js 来构建一个 Web 应用程序,并在其中集成 OpenLayers 地图。 要使用 Vue.js 和 OpenLayers,你需要先安装它们的依赖。对于 Vue.js,你可以使用 npm 来安装它。对于 OpenLayers,你可以下载它的 JavaScript 库并将其引入你的项目中。 一旦安装好依赖,你可以在 Vue.js 中使用 OpenLayers 的 API 来创建地图、添加图层、标记等。你可以使用 Vue.js 的组件化架构来组织你的代码,并且可以使用 Vuex 来管理你的应用程序的状态。 这是一个简单的例子,展示了如何在 Vue.js 中使用 OpenLayers: ``` <template> <div id="map"></div> </template> <script> import 'ol/ol.css'; import Map from 'ol/Map'; import View from 'ol/View'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; export default { mounted() { new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }) ], view: new View({ center: [0, 0], zoom: 2 }) }); } } </script> <style> #map { height: 400px; } </style> ``` 在这个例子中,我们创建了一个 Vue.js 组件,它包含一个 div 元素,用来显示地图。在 mounted 生命周期钩子中,我们创建了一个 OpenLayers 地图,并将其绑定到 div 元素上。我们使用了 OSM 图层,并设置了初始的缩放级别和中心点。 注意,这只是一个简单的例子,你可以根据你的需求使用更多的 OpenLayers 功能和 Vue.js 组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值