当前位置:   article > 正文

基于VUE3实现集成OpenLayers开发库加载天地图(通过静态资源导入方式)_vue3-openlayers

vue3-openlayers

前言

如何在VUE3项目中集成OpenLayers开发库,并实现加载三种类型的天地图呢?本文将详细描述实现过程及代码!


一、开发环境

1、VUE开发环境:node.js版本:v16.13.1;VUE版本:Vue CLI v5.0.8

2、OpenLayers版本:v6.15.1


二、集成OpenLayers开发库

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文件输入以下配置参数:

  1. const { defineConfig } = require('@vue/cli-service')
  2. module.exports = defineConfig({
  3. publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  4. outputDir: 'dist',
  5. assetsDir: 'static',
  6. transpileDependencies: true,
  7. lintOnSave: false
  8. })

5、加载天地图

在项目根目录下的src / components 子目录下新建地图组件olmap.vue,代码如下图所示。

  1. <template>
  2. <div class="wrapper">
  3. <div class="map" id="olMap">
  4. <div id="popup" class="ol-popup">
  5. <a href="#" id="popup-closer" class="ol-popup-closer"></a>
  6. <div id="popup-content">
  7. </div>
  8. </div>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. export default {
  14. data() {
  15. return {
  16. map: null, //地图对象
  17. };
  18. },
  19. mounted() {
  20. this.initMap();
  21. },
  22. methods: {
  23. //初始化地图
  24. initMap() {
  25. var TiandiMap_img = new ol.layer.Tile({
  26. name: "天地图影像图层",
  27. source: new ol.source.XYZ({
  28. url: "http://t0.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=你的密钥",
  29. wrapX: false
  30. })
  31. });
  32. var TiandiMap_cia = new ol.layer.Tile({
  33. name: "天地图影像注记图层",
  34. source: new ol.source.XYZ({
  35. url: "http://t0.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=你的你的密钥",
  36. wrapX: false
  37. })
  38. });
  39. //实例化Map对象加载地图
  40. this.map = new ol.Map({
  41. //地图容器div的ID
  42. target: 'olMap',
  43. //地图容器中加载的图层
  44. layers: [TiandiMap_img, TiandiMap_cia],
  45. //地图视图设置
  46. view: new ol.View({
  47. //地图初始中心点
  48. center: ol.proj.transform([116.2, 39.56], 'EPSG:4326', 'EPSG:3857'),
  49. //地图初始显示级别
  50. zoom: 9
  51. })
  52. });
  53. //实例化鼠标位置控件(MousePosition)
  54. var mousePositionControl = new ol.control.MousePosition({
  55. //坐标格式
  56. coordinateFormat: ol.coordinate.createStringXY(4),
  57. //地图投影坐标系(若未设置则输出为默认投影坐标系下的坐标)
  58. projection: 'EPSG:4326',
  59. //坐标信息显示样式类名,默认是'ol-mouse-position'
  60. className: 'custom-mouse-position',
  61. //显示鼠标位置信息的目标容器
  62. target: document.getElementById('mouse-position'),
  63. //未定义坐标的标记
  64. undefinedHTML: '&nbsp;'
  65. });
  66. this.map.addControl(mousePositionControl);
  67. }
  68. },
  69. };
  70. </script>
  71. <style scoped>
  72. .map {
  73. width: 100%;
  74. height: 100vh;
  75. }
  76. </style>

6、在项目根目录下的src / App.vue 文件中引用地图组件olmap.vue,如下图所示。

  1. <template>
  2. <olMap />
  3. </template>
  4. <script>
  5. import olMap from './components/olMap.vue'
  6. export default {
  7. name: 'App',
  8. components: {
  9. olMap
  10. }
  11. }
  12. </script>
  13. <style>
  14. #app {
  15. font-family: Avenir, Helvetica, Arial, sans-serif;
  16. -webkit-font-smoothing: antialiased;
  17. -moz-osx-font-smoothing: grayscale;
  18. text-align: center;
  19. color: #2c3e50;
  20. margin-top: 60px;
  21. }
  22. </style>


四、运行调试

1、在项目根目录下,运行以下命令:

npm run serve

2、通过浏览器访问上图中显示的地址: http://localhost:8080/,最终效果如下图所示。


五、源代码下载

本案例代码点击此处下载:https://download.csdn.net/download/liu2004051957/87189885icon-default.png?t=M85Bhttp://基于VUE3实现集成OpenLayers开发库加载天地图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/984427
推荐阅读
相关标签
  

闽ICP备14008679号