《Leaflet 基础知识点》- 绘制圆、线、矩形和多边形

该博客介绍了如何使用Leaflet库在地图上绘制矢量图形,包括圆、线、矩形和多边形。示例代码展示了如何创建这些图形并调整其样式,同时提供了适配图形范围的地图视图。文章还提到了复杂多边形的绘制,并给出了相关资源链接以获取更多信息。
摘要由CSDN通过智能技术生成

前言

注意绘制的都是矢量图层,所以在 Vector Layers 分类下: 

绘制

官网API

示例 

// 圆:半径 radius 的单位为米
var circle = L.circle([31.537628173828125,121.190185546875], {radius: 2000}).addTo(map);
// 跳到圆的范围
map.fitBounds(circle.getBounds());

效果

 线

官网API

示例

// 线:坐标点
var latlngs = [
    [31.537628173828125,121.190185546875],
    [30.878448486328125,121.19430541992188],
    [30.839996337890625,121.92901611328125]
];
// 绘制且添加
var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);
// 跳到线的范围
map.fitBounds(polyline.getBounds());

效果

矩形

官网API

示例

// 矩形:坐标点 [[ymin, xmin], [ymax, xmax]]
var bounds = [[30.894075744803956, 121.69670937773769],[31.436795822500894, 122.45965784374343]];
// 绘制且添加
var rectangle = L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map);
// 跳到矩形的范围
map.fitBounds(rectangle.getBounds());

效果

多边形

官网API,这是一个简单的多边形,复杂的可移步《Leaflet 进阶知识点》- L.polygon 多边形绘制详解

示例

// 多边形:坐标点,注意 第一个 与 最后一个点是无需一样,会自动闭合
var latlngs = [
    [31.537628173828125,121.190185546875],
    [30.878448486328125,121.19430541992188],
    [30.839996337890625,121.92901611328125],
    [31.348114013671875,121.8878173828125]
];
var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);
// 跳到多边形的范围
map.fitBounds(polygon.getBounds());

效果

小结

1、本文的示例只是简单的绘制单个图形,如果要绘制多个线、矩形和多边形,请查看官网;

2、如需了解点或标注是绘制,请移步《《Leaflet 基础知识点》- 绘制点(两种方式)》和《《Leaflet 基础知识点》- 添加图形标注

要在 Leaflet 中实现动态绘制多边形并且在绘制完成后双击多边形末尾点闭合多边形,你可以使用 Leaflet.draw 插件。这个插件可以让你很方便地添加编辑工具栏,支持绘制多种几何图形,包括多边形线条和形等。在绘制多边形时,你可以通过设置 `allowIntersection` 选项来控制多边形是否允许交叉。同时,你可以添加一个事件监听器,当用户双击多边形时触发闭合操作。 以下是一个示例代码,你可以将其添加到你的 Leaflet 应用程序中: ``` // 定义绘制控件 var drawControl = new L.Control.Draw({ edit: { featureGroup: drawnItems }, draw: { polyline: false, circle: false, marker: false, polygon: { allowIntersection: false, showArea: true } } }); // 添加绘制控件到地图上 map.addControl(drawControl); // 定义多边形绘制完成事件 map.on(L.Draw.Event.CREATED, function(event) { var layer = event.layer; drawnItems.addLayer(layer); }); // 定义多边形双击事件 map.on('dblclick', function(event) { var layer = event.target; if (layer instanceof L.Polygon) { var latlngs = layer.getLatLngs(); var lastPoint = latlngs[0][latlngs[0].length - 1]; if (event.latlng.equals(lastPoint)) { layer.closePopup(); layer.closeTooltip(); layer._latlngs.push(layer._latlngs[0]); layer.redraw(); } } }); ``` 在这个例子中,`drawnItems` 是一个 `L.FeatureGroup` 对象,用于存储绘制多边形。当用户完成绘制一个多边形时,会触发 `L.Draw.Event.CREATED` 事件,你可以在这个事件处理程序中将多边形添加到 `drawnItems` 中。当用户双击一个多边形时,会触发 `dblclick` 事件,你可以在这个事件处理程序中将多边形闭合。注意,这里我们要判断双击事件的位置是否等于多边形的末尾点,只有在这种情况下才会闭合多边形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值