基于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。如果文章对你有帮助,欢迎给个赞,有疑问,欢迎留言指正。

目录
相关文章
|
JavaScript 定位技术
vue3 引入天地图
vue3 引入天地图
1133 0
Threejs实现模拟河流,水面水流,水管水流,海面
Threejs实现模拟河流,水面水流,水管水流,海面
3660 0
Threejs实现模拟河流,水面水流,水管水流,海面
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
13599 0
【RESTful】RESTful API 接口设计规范 | 示例
|
前端开发 Java 数据库连接
Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换
Spring Boot 3 整合 Mybatis-Plus 动态数据源实现多数据源切换
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
存储 缓存 监控
【JVM调优】如何进行JVM调优?一篇文章就够了!
深入解读JVM性能的监控、定位和调优方案,阐述jps/stat/jstack、MAT等常用性能分析工具的使用,提出JVM参数、内存溢出、内存泄漏、CPU飙升、GC频繁等实际场景下JVM调优的方案。
【JVM调优】如何进行JVM调优?一篇文章就够了!
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
32352 0
|
Ubuntu Linux 网络安全
Docker&Docker Compose安装(离线+在线)
Docker&Docker Compose安装(离线+在线)
20630 1
|
JavaScript 测试技术
vue配置生产环境.env.production、测试环境.env.development
该文章介绍了如何在Vue项目中配置和使用不同的环境变量文件(.env、.env.production、.env.development)以适应开发、测试和生产环境,并通过修改`package.json`中的scripts来实现不同环境的打包。
3907 0
vue配置生产环境.env.production、测试环境.env.development
|
算法 JavaScript 数据可视化
基于leaflet-velocity的二维动态风场展示
本文讲解了leaflet-velocity插件,并利用插件进行了模拟的动态风场、洋流等信息的综合展示,让读者掌握集成方式。
1909 0
基于leaflet-velocity的二维动态风场展示