基于Leaflet.draw的自定义绘制实战

简介: 本文介绍了如何基于leaflet.draw进行自定义绘制,同时获取对象的bbox和geojson信息。

     之前的文章(基于Leaflet.draw的gis图形标绘实战)提过如何基于leaflet.draw插件进行基本图形的标绘。在实际项目中,你一定还会遇到以下的需求:在不需要Leaflet.draw按钮触发的事件中绘制一个矩形框,用来生成一个地理空间bbox范围,或者需要自定义绘制一条线,并获取绘制对象的Geojson。

    一、如何自定义按钮,并绑定绘制的方法

       其实,在不使用LeafLet.draw的前提下,你依然可以通过leaflet的api进行图形绘制。只是我们使用leaflet.draw可以更加流畅的使用绘制功能。前面的内容提过,以下代码为基本标绘的触发绑定代码。

map.addControl(newL.Control.Draw({
edit: {
featureGroup: drawnItems,
poly : {
allowIntersection : false                }
            },
draw: {
polygon : {
allowIntersection: false,
showArea:true                }
            }
        }));

而在一些场景中,我们只想通过一个按钮就激发绘制功能。这该如何实现呢?好在leafLet.draw本身提供了扩展。

二、功能按钮定义

<divstyle="position: absolute;top: 15px;right: 15px;z-index: 401;"><buttontype="button"onclick="drawRectangle();">绘制矩形</button><buttontype="button"onclick="getBbox();">获取bbox</button><buttontype="button"onclick="getGeojson();">获取Geojson</button><br/><buttontype="button"onclick="drawLine();">绘制线</button></div>

首先定义了四个按钮,关键代码如上所示:

三、手动开启绘制

functiondrawRectangle(){
console.log("开始绘制矩形...");
diyDrawLayers.clearLayers();
newL.Draw.Rectangle4Diy(map).enable();
    }

通过enable()方法直接触发矩形绘制,我们来看下实际效果:

image.png四、获取FeatureGroup的bbox

functiongetBbox(){
console.log("获取bbox...");
varbounds=diyDrawLayers.getBounds();
console.log("bbox==>"+bounds);
console.log("_northEast==>"+bounds._northEast);
console.log("_southWest==>"+bounds._southWest);
    }

  五、获取FeatureGroup的Geojson

functiongetGeojson(){
console.log("获取getGeojson...");
console.log(diyDrawLayers.toGeoJSON());
    }

image.png

六、FeatureGroup图层定义

vardiyDrawLayers=L.featureGroup().addTo(map);

通过以上几个步骤,大致完成了在不依赖leaflet.draw的前提下,直接使用按钮进行矩形绘制,同时获取绘制的矩形bbox的值(可以用来做空间查询),并获取绘制矩形的Geojson。如果文章对你有帮助,欢迎给个赞,有疑问,欢迎留言指正。

目录
相关文章
|
定位技术
基于Leaflet的轨迹模拟回放
在gis场景中,轨迹回放是一个很常见的场景。比如在导航软件中,在行程结束后根据运动轨迹生成运动图,在keep软件中,会自动记录用户的锻炼轨迹,在结束后可以看到自己的运动轨迹等等。这些需求都是设备在运行中自动记录相应的点,在结合gis模拟即可。
1924 0
基于Leaflet的轨迹模拟回放
|
NoSQL Redis
若依管理系统去掉Redis相关配置
若依管理系统去掉Redis相关配置
|
9月前
|
人工智能 安全 算法
从“工具过载”到“精准调用”:破解 Agent 工具管理难题
AgentScope Java × Higress:语义驱动工具精选,高效安全降成本。
892 69
|
7月前
|
移动开发 小程序 搜索推荐
上门家政系统源码,适配小程序+H5+公众号+APP端,包含管理端后台、师傅端、用户端
这是一款功能完备的上门家政系统源码,支持小程序、H5、公众号及APP多端适配,涵盖管理后台、师傅端与用户端。具备在线预约、师傅入驻、实名认证、订单/员工/用户/提现管理、智能派单等核心功能,覆盖保洁、月嫂、维修等全品类家政服务。
338 4
|
Web App开发 监控 JavaScript
一些常用的 Vue 性能分析工具
【10月更文挑战第2天】
1323 154
|
机器学习/深度学习 人工智能 关系型数据库
通义 CoGenAV 大模型音画同步感知,重新定义语音理解边界
CoGenAV 是一种创新的多模态语音理解模型,核心理念是实现“音画同步”的深度理解。通过学习 audio-visual-text 的时序对齐关系,构建更鲁棒、更通用的语音表征框架。它在视觉语音识别(VSR)、音视频语音识别(AVSR)、语音增强与分离(AVSE/AVSS)及主动说话人检测(ASD)等任务中表现出色,尤其在嘈杂环境下性能显著提升。仅需 223 小时数据训练即可媲美传统数千小时数据的效果,大幅降低训练成本。CoGenAV 支持主流平台如 GitHub、HuggingFace 和 ModelScope,助力多场景应用开发。
1734 10
|
开发工具 git 开发者
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
3725 0
|
存储 缓存 监控
【JVM调优】如何进行JVM调优?一篇文章就够了!
深入解读JVM性能的监控、定位和调优方案,阐述jps/stat/jstack、MAT等常用性能分析工具的使用,提出JVM参数、内存溢出、内存泄漏、CPU飙升、GC频繁等实际场景下JVM调优的方案。
【JVM调优】如何进行JVM调优?一篇文章就够了!
|
机器学习/深度学习 自然语言处理 安全
Llama 3.3开源!70B媲美405B性能,支持128K上下文
近期,Meta开源了Llama 3.3 多语言大型语言模型(LLM),Llama 3.3 是一个预训练并经过指令调优的生成模型,参数量为70B(文本输入/文本输出)。
3442 5
Llama 3.3开源!70B媲美405B性能,支持128K上下文

热门文章

最新文章