场景
Leaflet中使用Leaflet.Pin插件实现图层要素编辑效果:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/122466785
上面也使用了draw插件实现要素编辑,这里进行补充。
插件地址:
https://github.com/Leaflet/Leaflet.draw
下载插件,引入draw插件所需的js、css和image
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" /> <link rel="stylesheet" href="./css/leaflet.draw.css" /> <script type="text/javascript" src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> <script type="text/javascript" src="./js/leaflet.draw.js"></script>
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、修改css中图片的路径
2、添加绘制图层与绘制控件
//添加绘制图层 var drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); //添加绘制控件 var drawControl = new L.Control.Draw({ draw:{ //绘制线 polyline:true, //绘制多边形 polygon:true, //绘制矩形 rectangle:true, //绘制圆 circle:true, //绘制标注 marker:true, //绘制圆形标注 circlemarker:true }, edit:{ //绘制图层 featureGroup:drawnItems, //图形编辑控件 edit:true, //图形删除控件 remove:true, } });
3、添加绘制结束事件
//绘制事件 map.on(L.Draw.Event.CREATED, function(e){ var type = e.layerType, //获取绘制图层 drawlayer = e.layer; if(type === 'marker'){ drawlayer.bindPopup('A popup!'); } drawnItems.addLayer(drawlayer); });
4、完整代码
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>leaflet-draw修改图形坐标点</title> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" /> <link rel="stylesheet" href="./css/leaflet.draw.css" /> <style> html, body, #map { padding: 0; margin: 0; width: 100%; height: 100%; overflow: hidden; } </style> </head> <body > <div id="map"></div> <script type="text/javascript" src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> <script type="text/javascript" src="./js/leaflet.draw.js"></script> <script type="text/javascript"> var map = L.map('map').setView([36.09, 120.35], 13); var tiles = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '' }); tiles.addTo(map); //添加绘制图层 var drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); //添加绘制控件 var drawControl = new L.Control.Draw({ draw:{ //绘制线 polyline:true, //绘制多边形 polygon:true, //绘制矩形 rectangle:true, //绘制圆 circle:true, //绘制标注 marker:true, //绘制圆形标注 circlemarker:true }, edit:{ //绘制图层 featureGroup:drawnItems, //图形编辑控件 edit:true, //图形删除控件 remove:true, } }); //添加绘制控件 map.addControl(drawControl); //绘制事件 map.on(L.Draw.Event.CREATED, function(e){ var type = e.layerType, //获取绘制图层 drawlayer = e.layer; if(type === 'marker'){ drawlayer.bindPopup('A popup!'); } drawnItems.addLayer(drawlayer); }); </script> </body> </html>
5、效果