当前位置: 首页 > news >正文

openlayers+vite+vue3加载离线地图并实现初始化(一)

前景提示:本文主要讲解使用vite工具构建的项目,利用openlayers实现离线地图的主要一些功能,包括初始化地图、打点、画线、弹窗等等,这些后续有时间会持续为大家更新,本文主要阐述如何实现其首要功能离线地图的初始化。

目录

一、环境搭建

1.使用vite创建一个vue项目

2.安装ol

二、开始编码、初始化地图

1.创建地图容器

2.引入ol

3.创建渲染地图的方法

3.初始化地图

4.在 onMounted 后渲染地图

三、全部代码

四、效果展示


一、环境搭建

1.使用vite创建一个vue项目

npm init vite@latest

输入以上命令后会有相应的提示,首先是输入项目名,后面是选择要使用的框架,这里选择 vue 即可。

Select a framework:vanillavuereactpreactlit-elementsvelte

然后进入项目,使用命令初始化项目

cd 你的项目名(我创建的是map-openlayers)
npm install

2.安装ol

待上述步骤实现完成后,需要安装ol

npm i ol 

然后启动项目

npm run dev

二、开始编码、初始化地图

1.创建地图容器

在项目中新建一个vue文件,然后创建地图容器,这一步关键的一点是地图容器需要一个id,另外一定要在css中设置地图的宽高,如果不设置将会出现地图不显示的现象。

<template><div id="container" class="map"></div>
</template>
<style lang="less" scoped>
#container {width: 100%;height: 100%;position: absolute;
}
</style>

2.引入ol

在<script>中引入以下方法,这个根据需要引入即可

import { onMounted, reactive, ref } from 'vue'
import 'ol/ol.css' // 地图样式
import TileLayer from 'ol/layer/Tile' // 瓦片渲染方法
import XYZ from 'ol/source/XYZ'
import { Map, View } from 'ol' // 地图实例方法、视图方法
import { fromLonLat } from 'ol/proj'

3.创建渲染地图的方法

let map = ref(null)//地图图层参数
const mapView = reactive({center: fromLonLat([120.299, 31.568]), // 地图中心点,这里我选用以无锡为例zoom: 10, // 初始缩放级别minZoom: 10, // 最小缩放级别maxZoom: 15 // 最大缩放级别
})
const mapUrl = ref('')//这里填写离线地图的瓦片地址,我这里就暂不展示了

3.初始化地图

// 初始化地图
const init = () => {// 使用瓦片渲染方法const tileLayer = new TileLayer({source: new XYZ({url: mapUrl.value})})map.value = new Map({layers: [tileLayer],view: new View(mapView),target: 'container'})
}

4.在 onMounted 后渲染地图

onMounted(() => {init()
})

三、全部代码

因为分阶段书写想让开始学习这个的小伙伴也能一步步了解,下面附上全部代码

<template><div id="container" class="map"></div>
</template>
<script setup>
import { onMounted, reactive, ref } from 'vue'
import 'ol/ol.css' // 地图样式
import TileLayer from 'ol/layer/Tile' // 瓦片渲染方法
import XYZ from 'ol/source/XYZ'
import { Map, View } from 'ol' // 地图实例方法、视图方法
import { fromLonLat } from 'ol/proj'
let map = ref(null)//地图图层参数
const mapView = reactive({center: fromLonLat([120.299, 31.568]), // 地图中心点zoom: 10, // 初始缩放级别minZoom: 10, // 最小缩放级别maxZoom: 15 // 最大缩放级别
})
const mapUrl = ref('')//这里是离线地图的瓦片地址
// 初始化地图
const init = () => {// 使用瓦片渲染方法const tileLayer = new TileLayer({source: new XYZ({url: mapUrl.value})})map.value = new Map({layers: [tileLayer],view: new View(mapView),target: 'container'})addGeoJson()
}onMounted(() => {init()
})
</script>
<style lang="less" scoped>
#container {width: 100%;height: 100%;position: absolute;
}
</style>

四、效果展示

相关文章:

  • 高性能 Web 服务器:让网页瞬间绽放的魔法引擎(上)
  • [uniapp/wx小程序] 给自定义组件或ui组件加样式在wx小程序不生效
  • 搭建智能客服机器人:langgraph实现用户订单管理
  • 尝试给OpenHarmony4.0增加可以在动态库中使用的日志模块
  • 图像处理 -- ISP 之 tone mapping功能的实现原理
  • systemback制作Ubuntu自己的系统镜像
  • 观察者模式解析:实现对象间的舞蹈同步!
  • 怎么生成一个springboot的项目
  • Python中的random模块及相关模块详解
  • Application实际在云原生中的应用
  • 在ubuntu16.04下使用词典工具GoldenDict
  • thrift:拦截器ThriftEventHandler获取调用参数
  • SpringBoot项目启动后自动执行方法
  • 广州自闭症全托管学校-正规儿童康复中心
  • 利用深度学习技术来实现街景图像的语义分割(街景图像语义分割)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【翻译】babel对TC39装饰器草案的实现
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 0基础学习移动端适配
  • 5、React组件事件详解
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Django 博客开发教程 16 - 统计文章阅读量
  • Druid 在有赞的实践
  • egg(89)--egg之redis的发布和订阅
  • es6(二):字符串的扩展
  • hadoop集群管理系统搭建规划说明
  • Java IO学习笔记一
  • Javascript弹出层-初探
  • Java编程基础24——递归练习
  • JSDuck 与 AngularJS 融合技巧
  • js继承的实现方法
  • QQ浏览器x5内核的兼容性问题
  • tab.js分享及浏览器兼容性问题汇总
  • Webpack 4x 之路 ( 四 )
  • 飞驰在Mesos的涡轮引擎上
  • 回顾 Swift 多平台移植进度 #2
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 入门到放弃node系列之Hello Word篇
  • 使用 QuickBI 搭建酷炫可视化分析
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 想写好前端,先练好内功
  • raise 与 raise ... from 的区别
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ## 基础知识
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (03)光刻——半导体电路的绘制
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (160)时序收敛--->(10)时序收敛十
  • (2)空速传感器
  • (安卓)跳转应用市场APP详情页的方式
  • (补)B+树一些思想
  • (附源码)springboot 个人网页的网站 毕业设计031623