赞
踩
如何在VUE3项目中集成OpenLayers开发库,并实现加载三种类型的天地图呢?本文将详细描述实现过程及代码!
1、VUE开发环境:node.js版本:v16.13.1;VUE版本:Vue CLI v5.0.8
2、OpenLayers版本:v6.15.1
VUE集成第三方开发库一般两种方式:
1、通过NPM安装方式
2、通过静态资源导入方式
本文详细讲解第2种(通过静态资源导入方式)集成方式。
1、创建VUE3项目
vue create ol_basemap_demo
2、将OpenLayers 6开放库放在项目根目录下的public / static子目录下,这里涉及的库文件主要为ol.js、ol.css,如下图所示:
3、在项目根目录下的public / index.html文件中引用 ol.js、ol.css文件,如下图所示。在index.html的外部文件将可在项目中作为全局变量被使用。
4、修改配置项目根目录下的vue.config.js文件输入以下配置参数:
- const { defineConfig } = require('@vue/cli-service')
- module.exports = defineConfig({
- publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
- outputDir: 'dist',
- assetsDir: 'static',
- transpileDependencies: true,
- lintOnSave: false
- })
5、加载天地图
在项目根目录下的src / components 子目录下新建地图组件olmap.vue,代码如下图所示。
- <template>
- <div class="wrapper">
- <div class="map" id="olMap">
- <div id="popup" class="ol-popup">
- <a href="#" id="popup-closer" class="ol-popup-closer"></a>
- <div id="popup-content">
-
- </div>
- </div>
- </div>
- </div>
- </template>
- <script>
-
- export default {
- data() {
- return {
- map: null, //地图对象
- };
- },
- mounted() {
- this.initMap();
- },
- methods: {
- //初始化地图
- initMap() {
- var TiandiMap_img = new ol.layer.Tile({
- name: "天地图影像图层",
- source: new ol.source.XYZ({
- url: "http://t0.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=你的密钥",
- wrapX: false
- })
- });
- var TiandiMap_cia = new ol.layer.Tile({
- name: "天地图影像注记图层",
- source: new ol.source.XYZ({
- url: "http://t0.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=你的你的密钥",
- wrapX: false
- })
- });
-
- //实例化Map对象加载地图
- this.map = new ol.Map({
- //地图容器div的ID
- target: 'olMap',
- //地图容器中加载的图层
- layers: [TiandiMap_img, TiandiMap_cia],
- //地图视图设置
- view: new ol.View({
- //地图初始中心点
- center: ol.proj.transform([116.2, 39.56], 'EPSG:4326', 'EPSG:3857'),
- //地图初始显示级别
- zoom: 9
- })
- });
-
- //实例化鼠标位置控件(MousePosition)
- var mousePositionControl = new ol.control.MousePosition({
- //坐标格式
- coordinateFormat: ol.coordinate.createStringXY(4),
- //地图投影坐标系(若未设置则输出为默认投影坐标系下的坐标)
- projection: 'EPSG:4326',
- //坐标信息显示样式类名,默认是'ol-mouse-position'
- className: 'custom-mouse-position',
- //显示鼠标位置信息的目标容器
- target: document.getElementById('mouse-position'),
- //未定义坐标的标记
- undefinedHTML: ' '
- });
- this.map.addControl(mousePositionControl);
-
- }
- },
- };
- </script>
-
- <style scoped>
- .map {
- width: 100%;
- height: 100vh;
- }
- </style>
6、在项目根目录下的src / App.vue 文件中引用地图组件olmap.vue,如下图所示。
- <template>
- <olMap />
- </template>
-
- <script>
- import olMap from './components/olMap.vue'
- export default {
- name: 'App',
- components: {
- olMap
- }
- }
- </script>
-
- <style>
- #app {
- font-family: Avenir, Helvetica, Arial, sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- text-align: center;
- color: #2c3e50;
- margin-top: 60px;
- }
- </style>
1、在项目根目录下,运行以下命令:
npm run serve
2、通过浏览器访问上图中显示的地址: http://localhost:8080/,最终效果如下图所示。
五、源代码下载
本案例代码点击此处下载:https://download.csdn.net/download/liu2004051957/87189885http://基于VUE3实现集成OpenLayers开发库加载天地图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。