leaflet-draw详细使用

本文介绍了如何在Vue3项目中集成Leaflet库,并使用leaflet-draw插件实现地图上的绘制功能,包括线、多边形、矩形、圆和标记的绘制,以及编辑和删除控件的配置。

 leaflet-draw

此篇文章是我leaflet基本用法的延伸地图信息 leaflet +vue3 一个文档让你掌握leaflet基础用法_vue3+leaflet-优快云博客

所以没有过多介绍leaflet。

废话不多说,直接上代码,此处的我把该事件单独放在了一个js文件,map是初始化地图,以下代码包含了英文转中文(好像可以直接引入leaflet.draw-cn.js文件也可转换,但有可能不行,所以科学上网哟各位!!!)

有啥问题,优化改进欢迎留言

import L from 'leaflet'
import 'leaflet/dist/leaflet.css'
import 'leaflet-draw'
import 'leaflet-draw/dist/leaflet.draw.css'
export function useTools(map) {
    //添加绘制图层
    let drawnItems = new L.FeatureGroup();
    map.addLayer(drawnItems);
    添加绘制控件
     let drawControl = new L.Control.Draw({
       draw: {
             polyline: true, //绘制线
             polygon: true,  //绘制多边形
             rectangle: true, //绘制矩形
             circle: true,//绘制圆
             marker: true,   //绘制标注
             circlemarker: 
### 配置 Leafletleaflet-draw 编辑工具的边角样式 在使用 `Leaflet.draw` 插件时,可以通过自定义 CSS 来调整绘制和编辑工具的外观,包括边角样式的修改。对于更复杂的配置需求,如限制编辑操作,则需深入理解 API 并适当扩展。 #### 自定义边角样式 为了改变默认的地图编辑控件(例如多边形顶点手柄)的颜色或其他属性,可以在项目中加入特定的选择器来覆盖原有样式: ```css /* 修改所有可拖拽控制点 */ .leaflet-editing-icon { background-color: red !important; } /* 特定于矩形编辑模式下的旋转句柄 */ .leaflet-rectangle .leaflet-resize-handle { border-radius: 5px; } ``` 上述代码片段展示了如何通过 CSS 类名 `.leaflet-editing-icon` 改变交互图标颜色以及针对矩形对象设置了圆角效果[^1]。 #### 设置编辑约束条件 如果希望对用户的编辑行为施加某些限制——比如不允许缩小到一定尺寸之下或者保持比例不变——则可能需要监听相关事件并编写逻辑处理函数。下面是一个简单的例子说明怎样阻止形状被拉伸得过小: ```javascript map.on('draw:created', function (e) { var layer = e.layer; // 添加至图层组以便后续管理 drawnItems.addLayer(layer); // 定义最小允许面积阈值 const minAreaThreshold = 10 * 10; // 假设单位为像素平方 if ('getBounds' in layer && typeof layer.getBounds === 'function') { let bounds = layer.getBounds(); map.on('draw:editstart', () => { originalBounds = bounds.clone(); // 记录原始边界框用于恢复 map.on('draw:editemdstop', () => { newBounds = layer.getBounds(); if (!newBounds.contains(originalBounds)) { // 若新范围超出原范围即视为非法变形 alert("无法使图形变得更小!"); setTimeout(() => { layer.setBounds(originalBounds); // 还原合法状态 }, 0); } delete originalBounds; }); }); } }); ``` 此 JavaScript 脚本实现了当创建新的几何实体之后,在每次尝试对其进行编辑前保存当前大小;一旦检测到违反预设规则的变化就会提示警告并将物体重置回之前的状态[^2]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

з小丸子ε

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值