【vue+leaflet】vue使用leaflet.pm保存绘制后的图层的点位信息、图层回显、平面图切换、地图事件函数、图层事件函数说明(二)

在这里插入图片描述
看效果展示:

【vue+leaflet】第二节效果展示视频

1.平面图切换,多个平面图切换展示

    <div class="select"><span>平面图:</span><el-select v-model="pic" placeholder="全部" clearable filterable @change="initDate"><el-option :label="item.name" v-for="(item, index) in picArr" :key="index" :value="item.id"> </el-option></el-select></div>...pic: 0,picArr: [{ id: 0, name: '1楼平面图', points: [] },{ id: 1, name: '2楼平面图', points: [] },{ id: 2, name: '3楼平面图', points: [] },],imageOverlay: '',

来一个select展示多个平面图的下拉列表,点击切换更换平面图

initDate(){// 这段是为了切换的时候把上一个平面图中所有图层全删掉,防止携带到下一个平面图中// 循环遍历图层删除this.map.eachLayer((layer) => {if (layer._latlngs != null || layer._latlng != null) {layer.remove()}})...// select切换时,获取v-model绑定的id,动态更新平面图let url = require(`../../public/home/bgc${this.pic}.jpg`)...// imageOverlay有值代表已经绘制过地图和平面图,切换平面图就换换url和尺寸就可以了// else 没值,就初始化加载一遍平面图到地图中.// 添加图片,更换图片if (this.imageOverlay) {this.imageOverlay.setUrl(url)this.imageOverlay.setBounds(this.bounds)} else {this.imageOverlay = L.imageOverlay(url, this.bounds).addTo(this.map)}
}

在这里插入图片描述

2.存储绘制图层的点位信息 (地图事件)

项目中是掉接口进行保存的,这里用本地缓存替换一下.都是一样的步骤

this.map.on('pm:create', this.createClick)//通过这个绑定的,这个写在initDate方法中// 图层绘制完成事件createClick(e) {// console.log('图层绘制完成', e)// 获取缓存的图层数据,看看之前有没有绘制过,本次绘制完push到改集合中let res = JSON.parse(localStorage.getItem('layers')) || []// 没有值没有绘制,赋个值初始值if (!res[this.pic]) res[this.pic] = []// 只要两个参数即可保存该图层信息,id和经纬度let obj = {_leaflet_id: e.layer._leaflet_id,latlngs: e.layer._latlngs,}res[this.pic].push(obj)localStorage.setItem('layers', JSON.stringify(res))// 给图层绑定点击、拖拽、编辑事件e.layer.on('pm:edit', this.editLayClick).on('click', this.layClick).on('pm:dragend', this.dragendLayClick)},

3.回显存储过的图层点位信息

回显就在平面图初始化的时候回显就可以了

initDate(){...// 获取本地存储的图层数据let res = JSON.parse(localStorage.getItem('layers')) || []// 当前平面图下如果有绘制的图层,就进行回显if (res[this.pic]) {// 循环绘制图层res[this.pic].forEach((e) => {let lay = L.polygon(e.latlngs).addTo(this.map).on('pm:edit', this.editLayClick).on('click', this.layClick).on('pm:dragend', this.dragendLayClick)// 这个id每次刷新,来回切换平面图,都会改变,所以要更新一下,如果不更新,下面删除,拖拽,编辑,的时候就找不到图层了e._leaflet_id = lay._leaflet_id})localStorage.setItem('layers', JSON.stringify(res))}...
}

4.图层删除事件 (地图事件)

 this.map.on('pm:remove', this.removeClick) // 在initDate方法中注册removeClick(){// console.log('图层删除', e)let res = JSON.parse(localStorage.getItem('layers')) || []res[this.pic].forEach((d, i) => {if (d._leaflet_id == e.layer._leaflet_id) {res[this.pic].splice(i, 1)}})localStorage.setItem('layers', JSON.stringify(res))}

5.图层拖拽、编辑事件(图层事件)

拖拽和编辑其实差不多,拖拽后会走拖拽事件和编辑事件,因为项目没什么特殊要求,所以把拖拽和编辑后的逻辑处理统一写在编辑事件里面了
拖拽走过dragendLayClick方法后还会走editLayClick方法,编辑只会走editLayClick方法
// 在createClick图层绘制的方法中注册绑定的// 区域图层拖拽dragendLayClick(e) {console.log('图层拖拽', e)},// 区域图层编辑editLayClick(e) {console.log('图层编辑', e)let res = JSON.parse(localStorage.getItem('layers'))// 循环遍历更新一下id和经纬度就可以了res[this.pic].forEach((d) => {if (d._leaflet_id == e.target._leaflet_id) {d.latlngs = e.target._latlngsd._leaflet_id = e.target._leaflet_id}})localStorage.setItem('layers', JSON.stringify(res))},

所有示例代码已上传,点击前往获取
Done!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习.线性回归

斯塔1和2是权重项&#xff0c;斯塔0是偏置项&#xff0c;在训练过程中为了使得训练结果更加精确而做的微调&#xff0c;不是一个大范围的因素&#xff0c;核心影响因素是权重项 为了完成矩阵的运算&#xff0c;在斯塔0后面乘x0&#xff0c;使得满足矩阵的转换&#xff0c;所以在…

编码后的字符串lua

-- 长字符串 local long_string "你好你好你好你好你好你好你好你好" local encoded_string "" for i 1, #long_string do local char_code string.byte (long_string, i) encoded_string encoded_string .. char_code .. "," end encoded_…

redis数据结构源码分析——压缩列表ziplist(I)

前面讲了跳表的源码分析&#xff0c;本篇我们来聊一聊另外一个重点结构——压缩列表 文章目录 存储结构字节数组结构节点结构 压缩编码zipEntryzlEntry ZIP_DECODE_PREVLENZIP_DECODE_LENGTH API解析ziplistNew(创建压缩列表)ziplistInsert(插入)ziplistDelete(删除)ziplistFi…

复旦大学EMBA联合澎湃科技:共议科技迭代 创新破局

1月18日&#xff0c;由复旦大学管理学院、澎湃新闻、厦门市科学技术局联合主办&#xff0c;复旦大学EMBA项目、澎湃科技承办的“君子知道”复旦大学EMBA前沿论坛在厦门成功举办。此次论坛主题为“科技迭代 创新破局”&#xff0c;上海、厦门两地的政策研究专家、科学家、科创企…

2024年漳州本地有正规等保测评机构吗?在哪里?

我们大家都知道&#xff0c;企业办理等保一定要找有资质的等保测评机构。因此不少漳州企业在问&#xff0c;2024年漳州本地有正规等保测评机构吗&#xff1f;在哪里&#xff1f;这里我们小编通过查找来为大家解答一下&#xff0c;仅供参考&#xff01; 目前福建漳州本地没有正规…

HTTP---------状态码

当服务端返回 HTTP 响应时&#xff0c;会带有一个状态码&#xff0c;用于表示特定的请求结果。比如 HTTP/1.1 200 OK&#xff0c;里面的 HTTP/1.1 表示协议版本&#xff0c;200 则是状态码&#xff0c;OK 则是对状态码的描述。 由协议版本、状态码、描述信息组成的行被称为起始…

北京硒鼓耗材回收价位,硒鼓回收价格,回收

联系我的时候请说是在百猫网看到的&#xff01; 硒鼓回收价格&#xff1a;最专业的硒鼓回收 顺达耗材回收 俗话说&#xff0c;顾客是最好的&#xff0c;良好的品牌效应是推动发展的关键之一。 北京顺达耗材回收有限公司为中小企业创造良好的二手消费市场&#xff0c;不断贯彻…

皓学IT:MySQL02

一、了解表 1.1.概述 表是处理数据和建立关系型数据库及应用程序的基本单元&#xff0c;是构成数据库的基本元素之一&#xff0c;是数据库中数据组织并储存的单元&#xff0c;所有的数据都能以表格的形式组织&#xff0c;目的是可读性强。 1.2.表结构简述 一个表中包括行和列…

Uncertainty-Aware Mean Teacher(UA-MT)

Uncertainty-Aware Mean Teacher 0 FQA:1 UA-MT1.1 Introduction:1.2 semi-supervised segmentation1.3 Uncertainty-Aware Mean Teacher Framework 参考&#xff1a; 0 FQA: Q1: 不确定感知是什么意思&#xff1f;不确定信息是啥&#xff1f;Q2&#xff1a;这篇文章的精妙的点…

Java面试——锁

​ 公平锁&#xff1a; 是指多个线程按照申请锁的顺序来获取锁&#xff0c;有点先来后到的意思。在并发环境中&#xff0c;每个线程在获取锁时会先查看此锁维护的队列&#xff0c;如果为空&#xff0c;或者当前线程是等待队列的第一个&#xff0c;就占有锁&#xff0c;否则就会…

idea 2018.3永久简单激活。激活码

1.打开hosts文件将 0.0.0.0 account.jetbrains.com 添加到文件末尾 C:\Windows\System32\drivers\etc\hosts 2.注册码&#xff1a; MNQ043JMTU-eyJsaWNlbnNlSWQiOiJNTlEwNDNKTVRVIiwibGljZW5zZWVOYW1lIjoiR1VPIEJJTiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaW…

数据结构知识点总结-线性表(1)-线性表的定义、基本操作、顺序表表示

线性表 定义 线性表是具有相同数据类型的N&#xff08;N>0&#xff09;个元素的有限序列&#xff0c;其中N为表长&#xff0c;当N0时线性表是一张空表。 线性表的逻辑特征&#xff1a;每个非空的线性表都有一个表头元素和表尾元素&#xff0c;中间的每个元素有且仅有一个直…

有趣的CSS - 弹跳的圆

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用css写一个好玩的不停弹跳变形的圆。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

亿道丨三防平板电脑厂家丨三防平板PDA丨三防工业平板:数字时代

在当今数字化时代&#xff0c;我们身边的世界变得越来越依赖于智能设备和无线连接。其中&#xff0c;三防平板PDA&#xff08;Personal Digital Assistant&#xff09;作为一种功能强大且耐用的数字工具&#xff0c;正在引领我们进入数字世界的全新征程。 三防平板PDA结合了平板…

LeetCode 0235.二叉搜索树的最近公共祖先:用搜索树性质(不遍历全部节点)

【LetMeFly】235.二叉搜索树的最近公共祖先&#xff1a;用搜索树性质&#xff08;不遍历全部节点&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 给定一个二叉搜索树, 找到该树中两个指定节点的最近公…

2024全国水科技大会暨减污降碳协同增效创新与实践论坛(八)

召集人&#xff1a;王洪臣 中国人民大学环境学院教授 姚 宏 北京交通大学教授 为大会征集“绿色低碳污水厂案例”&#xff0c;欢迎各相关单位积极报名&#xff01; 一、会议背景 生态环境部、国家发展和改革委员会等七部门印发《减 污降碳协同增效实施方案》中明确提出推进水…

【C++】C++对C语言的关系,拓展及命名空间的使用

文章目录 &#x1f4dd;C简述C融合了3种不同的编程方式&#xff1a;C和C语言关系是啥呢&#xff1f;C标准 &#x1f320;C应用&#x1f320;C语言优点第一个C程序 &#x1f320;命名空间&#x1f320;命名空间的使用命名空间的定义 &#x1f320;怎么使用命名空间中的内容呢&am…

测试C#使用ViewFaceCore实现图片中的人脸遮挡

基于ViewFaceCore和DlibDotNet都能实现人脸识别&#xff0c;准备做个遮挡图片中人脸的程序&#xff0c;由于暂时不清楚DlibDotNet返回的人脸尺寸与像素的转换关系&#xff0c;最终决定使用ViewFaceCore实现图片中的人脸遮挡。   新建Winform项目&#xff0c;在Nuget包管理器中…

【深度学习】微调ChatGlm3-6b

1.前言 指令微调ChatGlm3-6b。微调教程在github地址中给出&#xff0c;微调环境是Qwen提供的docker镜像为环境。 镜像获取方式&#xff1a;docker pull qwenllm/qwen:cu117 github地址&#xff1a;https://github.com/liucongg/ChatGLM-Finetuning 2.微调过程 github地址中的教…

Excel工作表控件实现滚动按钮效果

实例需求&#xff1a;工作表中有多个Button控件&#xff08;工作表Form控件&#xff09;和一个ScrollBar控件&#xff08;工作表ActiveX控件&#xff0c;名称为ScrollBar2&#xff09;&#xff0c;需要实现如下图所示效果。点击ScrollBar控件实现按钮的滚动效果&#xff0c;实际…