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

目录
相关文章
|
14天前
|
XML 前端开发 JavaScript
如何使用 SVG 和 Canvas 来创建动画?
【10月更文挑战第24天】使用 SVG 和 Canvas 创建动画都有各自的特点和优势,SVG 更适合基于 XML 和 CSS 的简单动画,而 Canvas 则更适合通过 JavaScript 实现复杂的、高性能的动画效果。在实际应用中,可以根据具体的需求和场景选择合适的技术来创建动画。
36 1
|
1月前
|
定位技术 调度
Pixi绘制各种图形
这篇文章作为Pixi.js入门教程的一部分,详细介绍了如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的实现代码。
34 0
Pixi绘制各种图形
|
1月前
Pixi入门第二章:绘制各种图形
这篇文章是Pixi.js入门系列的第二章,重点在于如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的代码示例。
37 0
Pixi入门第二章:绘制各种图形
|
4月前
|
前端开发
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
|
6月前
|
前端开发
|
6月前
|
前端开发 小程序
微信小程序canvas画布绘制;canvas画布图片保存
微信小程序canvas画布绘制;canvas画布图片保存
89 0
《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)
《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)
619 0
|
定位技术
Threejs使用Shapes实现不规则几何体,自定义绘图
Threejs使用Shapes实现不规则几何体,自定义绘图
1015 0
Threejs使用Shapes实现不规则几何体,自定义绘图
|
JavaScript 定位技术
基于Leaflet.draw的gis图形标绘实战
本文将通过编码的方式讲解如何引入Leaflet.draw组件,并绘制点、线、面、圆对象,同时可以计算线的距离,面积,圆半径和点的经纬度等信息。通过本文可了解基本操作,可以基于leaflet扩展相关的绘制组件,为空间检索等
675 0
基于Leaflet.draw的gis图形标绘实战
|
缓存 定位技术
解决Leaflet.draw中polyline绘制无法结束的问题
通过本文,可以了解如何自定义Draw.PolyLine对象,以及在扩展时需要注意的一些坑,知道如何调试函数并定位问题,最终完成需求。
340 0
解决Leaflet.draw中polyline绘制无法结束的问题