【vue+leaflet】vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一)

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

一,插件安装

npm i leaflet --save   // 我的版本^1.9.4
npm i leaflet.pm --save // 我的版本^2.2.0

附官网链接:
leaflet官网: https://leafletjs.com/index.html
leaflet.pm官网: https://www.npmjs.com/package/leaflet.pm?activeTab=readme

二,模块引入

因为我是单个页面需要所有就局部引入了,也可以放全局里面引入

<script>
import 'leaflet/dist/leaflet.css'
import 'leaflet/dist/leaflet'
import 'leaflet/dist/leaflet-src'
import 'leaflet/dist/leaflet-src.esm'
import * as L from 'leaflet'
import icon from 'leaflet/dist/images/marker-icon.png'
import iconShadow from 'leaflet/dist/images/marker-shadow.png'
import 'leaflet.pm'
import 'leaflet.pm/dist/leaflet.pm.css'
const DefaultIcon = L.icon({iconUrl: icon,shadowUrl: iconShadow,
})
L.Marker.prototype.options.icon = DefaultIcon
export default {data() {return {map: null,fillColor: '#2d75ff80',bounds: [[0, 0],[0, 0],], // 平面图大小}}
}
</script>

三,逻辑代码

 <div id="imageMap"></div>......methods: {// 平面图初始化initMap() {this.map = L.map('imageMap', {minZoom: -3,zoom: 5,maxZoom: 4,zoomSnap: 0.1, // 缩放步长attributionControl: false, // 右下角图例控件zoomControl: true, // 缩放控件crs: L.CRS.Simple, // 坐标系center: [0, 0], // 中心点})this.map.pm.setLang('zh') // 控件提示设置中文this.map.pm.addControls({position: 'topleft', // 控件菜单位置drawPolygon: true, //绘制多边形drawMarker: true, //绘制标记点drawCircleMarker: true, //绘制圆形标记drawPolyline: true, //绘制线条drawRectangle: true, //绘制矩形drawCircle: true, //绘制圆圈editMode: true, //编辑多边形dragMode: true, //拖动多边形cutPolygon: true, //添加⼀个按钮以删除多边形⾥⾯的部分内容removalMode: true, //清除多边形})// 全局图层样式this.map.pm.setPathOptions({fillOpacity: 0.5,fillColor: this.fillColor,})},// 地图初始化initDate() {// 获取图片宽高,防止不同尺寸的图片回显在页面上有多余的留白问题let img = new Image()let url = require('../../public/home/bgc4.jpg')img.src = urlimg.onload = () => {let w = img.widthlet h = img.heightthis.bounds = [[0, 0],[h, w],]// 创建地图L.imageOverlay(url, this.bounds).addTo(this.map)// 设置地图图层区域this.map.fitBounds(this.bounds)}// 给地图绑定绘制、删除的事件this.map.on('pm:create', this.createClick)this.map.on('pm:remove', this.removeClick)// 禁止背景图拖拽,默认是可拖拽的this.map.dragging.disable()// 禁止双击缩放,默认是可双击缩放的this.map.doubleClickZoom.disable()// 禁止滚动缩放,默认是可滚动缩放的this.map.scrollWheelZoom.disable()},// 图层绘制完成createClick(e) {// console.log('图层绘制完成', e)// 设置图层样式e.layer.setStyle({fillOpacity: 0.5,fillColor: this.fillColor,// color:线段颜色// weight:线段宽度// opacity:线段透明度// dashArray:虚线间隔// fill:是否填充内部(true/false)// fillColor:内部填充颜色,如不设置,默认为color颜色// fillOpacity:内部填充透明度})// 给图层绑定点击、拖拽、编辑事件e.layer.on('pm:edit', this.editLayClick).on('click', this.layClick).on('pm:dragend', this.dragendLayClick)},// 图层删除removeClick(e) {// console.log('图层删除', e)},// 区域图层点击layClick(e) {// console.log('区域图层点击', e)},// 区域图层拖拽dragendLayClick(e) {// console.log('区域图层拖拽', e)},// 区域图层编辑editLayClick(e) {// console.log('图层编辑', e)},},mounted() {this.initMap()this.initDate()// 窗口缩放,地图自适应缩放window.onresize = () => {this.map.invalidateSize(true)this.map.fitBounds(this.bounds)}},

到这里就可以实现效果图所展示的功能了,下节详细说明各个模块及事件函数的功能.
所有示例代码已上传,点击前往获取
Done

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

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

相关文章

Android MMKV 接入+ 替换原生 SP + 原生 SP 数据迁移

背景:项目中一直使用的是原生 SP,众所周知,使用原生 SP 存在卡顿性能问题。公司的性能监控平台抓到不少原生 SP 导致的 ANR 问题: java.io.FileDescriptor.sync (FileDescriptor.java) android.os.FileUtils.sync (FileUtils.java:256) android.app.SharedPreferencesImpl.…

CentOS7.6安装RocksDB

一、简介 RocksDB是使用C编写的嵌入式kv存储引擎&#xff0c;其键值均允许使用二进制流。由Facebook基于levelDB开发&#xff0c; 提供向后兼容的levelDB API。 RocksDB针对Flash存储进行优化&#xff0c;延迟极小。RocksDB使用LSM存储引擎&#xff0c;纯C编写。Java版本Rock…

使用傅里叶实现100倍的压缩效果(附Python源码)

傅里叶变换&#xff08;Fourier Transform&#xff09;是一种将一个函数&#xff08;在时间或空间域&#xff09;转换为另一个函数&#xff08;在频率域&#xff09;的数学变换方法。它在信号处理、图像处理、通信等领域有广泛应用。 实现过程 将傅里叶系数核心的1%保留&…

使用阿里云发送短信

使用阿里云短信服务有两种方式 API 发送和 控制台发送&#xff0c;控制台发送到话有太多限制&#xff0c;这里我们使用API 通过 调用服务端代码进行发送。 整体结构如下&#xff1a; 导入依赖 <!--阿里云短信发送--><dependency><groupId>com.aliyun<…

iOS如何一键清除剪贴板中的所有内容

参考:https://www.jb51.net/shouji/746688.html 1.打开“快捷指令”应用&#xff0c;前往“快捷指令中心”&#xff0c;下拉找到“巧用剪贴板”并点击“查看全部”。 2.下拉到底部&#xff0c;点击“清除剪贴板中的所有内容”&#xff0c;然后选择“添加快捷指令”&#xff1a…

Java学习--黑马SpringBoot3课程个人总结-2024-02-12

1.环境准备 出现报错 Vue 引入路径正确的&#xff0c;但一直报错&#xff1a; Already included file name ‘‘ differs from file name ‘‘ only in casing. 解决方案来自此链接 2.注册界面的搭建 代码如下 <script setup> import { User, Lock } from element-plus/…

信钰证券:a股可以t+0吗?怎么间接实现t+0?

a股不能够t0&#xff0c;它是实施t1的买卖方式&#xff0c;即当天买入的个股&#xff0c;当天不能够卖出&#xff0c;需求比及下一个买卖日才能够卖出&#xff0c;但是&#xff0c;投资者能够通过以下方法直接地完成t0&#xff1a; 1、融券操作 通过融资融券中的融券直接地做…

多元统计分析课程论文-聚类效果评价

数据集来源&#xff1a;Unsupervised Learning on Country Data (kaggle.com) 代码参考&#xff1a;Clustering: PCA| K-Means - DBSCAN - Hierarchical | | Kaggle 基于特征合成降维和主成分分析法降维的国家数据集聚类效果评价 目录 1.特征合成降维 2.PCA降维 3.K-Mean…

Docker部署开源白板工具Excalidraw并结合内网穿透远程访问

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建…

基于ORB-SLAM2与YOLOv8剔除动态特征点

基于ORB-SLAM2与YOLOv8剔除动态特征点 以下方法以https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download#freiburg3_walking_xyz数据集进行实验测试APE 首先在不剔除动态特征点的情况下进行测试&#xff1a; 方法1:segment坐标点集合逐一排查剔除 利用YOLOv8的segm…

容性负载箱有哪些主要功能?

容性负载箱是一种用于模拟电网中感性负载的设备&#xff0c;其主要功能包括以下几点&#xff1a; 补偿无功功率&#xff1a;在电力系统中&#xff0c;感性负载会产生无功功率&#xff0c;导致电网电压降低、功率因数下降。容性负载箱可以产生与感性负载相反的无功功率&#xff…

快速排序(2)——快速排序的优化

因为Hoare的快速排序写起来容易出错&#xff0c;并且有很多地方不太合适&#xff0c;于是&#xff0c;就有了一下几种优化。 基准值的优化 如果我们一直选取一组数据的第一个数据为基准值&#xff0c;如果遇到重复少的值的化&#xff0c;没什么问题。但是如果重复的值比较多的…

【PyQt】11-QTextEdit、QPushButton

文章目录 前言一、文本输入-QTextEdit1.1 代码1.2 运行结果 二、QPushButton2.1.1 按钮上添加文本2.1.2 按键的弹跳效果2.1.3 两个信号可以绑定一个槽。2.1.4 带图标的按键运行结果 2.1.5 按键不可用以及回车默认完整代码2.2 单选按键控件运行结果 2.3 复选框&#xff08;多选框…

WouoUI-PageVersion 一个用于快速构建具有丝滑OLED_UI动画的项目

WouoUI-PageVersion 写在前面 简介&致谢 Air001的TestUI例子的b站的演示视频 Air001的LittleClock例子的b站演示视频: https://www.bilibili.com/video/BV1J6421g7H1/ Stm32的TestUI例子的b站演示视频: https://www.bilibili.com/video/BV1mS421P7CZ/ 所有演示的工程文…

对前端限流操作(Redis版本)4种算法

固定时间窗口算法 固定时间窗口算法也可以叫做简单计数算法。网上有很多都将计数算法单独抽离出来。但是笔者认为计数算法是一种思想&#xff0c;而固定时间窗口算法是他的一种实现包括下面滑动时间窗口算法也是计数算法的一种实现。因为计数如果不和时间进行绑定的话那么失去…

文心一言API使用教程(python版)

注&#xff1a;在做项目的时候需要调用文心一言&#xff0c;发现网上的版本很乱&#xff0c;基本都止步在官方文档的代码上&#xff0c;所以写了一篇博客来记录自己的尝试实现了对文心一言的循环调用和自定义询问&#xff0c;本篇文章不需要有任何对api的基础知识&#xff0c;代…

PNG图片压缩-UPNG.js参数说明及示例

UPNG.js是一个非常轻量且高效的库&#xff0c;用于处理PNG图像。它可以编码和解码PNG图片&#xff0c;同时支持压缩和解压缩功能。特别适合在前端项目中处理图像&#xff0c;尤其是在需要优化图像大小而不牺牲质量时。 UPNG.encode()函数是UPNG.js中用于将图像数据编码成PNG格…

lv15 input子系统框架、外设驱动开发 5

一、input子系统基本框架 在我们日常的Linux系统中&#xff0c;存在大量的输入设备&#xff0c;例如按键、鼠标、键盘、触摸屏、摇杆等&#xff0c;他们本身就是字符设备&#xff0c;linux内核将这些字符设备的共同性抽象出来&#xff0c;简化驱动开发建立了一个input子系统。 …

羊大师的羊奶有几种口味呢?

羊大师提供的羊奶有6种不同口味可供选择。 1.新鲜羊奶不仅没有膻味&#xff0c;而且富含高钙无糖&#xff0c;并且含有丰富的优质蛋白质和超过200种营养物质。这非常适合缺钙或体弱的人饮用。 2.益生菌羊奶是一种含有保加利亚乳杆菌、嗜酸乳杆菌、双歧杆菌等益生菌群的产品&…

基于物联网的工业企业能耗监控系统

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;针对工业制造企业存在高能耗、高污染的问题&#xff0c;提出了一种用于工业企业能耗监控的多层级网络系统。本系统可完成企业内部电力、水资源以及燃气等能源…