场景

Leaflet中使用Leaflet.draw插件实现图形交互绘制和编辑(修改图形坐标点):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124009721

上面在使用draw进行绘制几何图形的基础上,怎样在绘制结束后获取图形的几何信息。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、添加地图与显示几何信息的面板

    <div id="map"></div><div id="info" style="position: absolute; top: 0px; right: 10px; height: 200px; width: 350px; z-index: 1; border: solid 1px;background-color:white;"><label id="type">几何图形类型:&nbsp;</label><p style="margin:0">图形几何信息如下:&nbsp;</p><div id="result" style="height: 100px; font-family: 微软雅黑; font-size: 14px; font-weight: bold;"></div></div>

2、引入所需js依赖与jquery

​<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" src="./js/jquery/jquery-1.11.2.min.js"></script>​

3、在上面实现绘制的基础上重新绘制结束事件

       //绘制事件map.on(L.Draw.Event.CREATED, function(e){//获取绘制图形类型var type = e.layerType,//获取绘制图层drawlayer = e.layer;if (type === 'marker') {//显示Popupdrawlayer.bindPopup('A popup!');}//显示图层drawnItems.addLayer(drawlayer);//几何信息字符串var latlngsStr = "";//获取线几何信息if (type == "polyline") {$("#type").text("几何图形类型: 线");if (drawlayer.editing.latlngs[0].length > 0) {for (var latlngslength = 0; latlngslength < drawlayer.editing.latlngs[0].length; latlngslength++) {//获取几何信息latlngsStr += "<font>" + drawlayer.editing.latlngs[0][latlngslength].lat + "," + drawlayer.editing.latlngs[0][latlngslength].lng + "</font><br>"}}}//获取多边形几何信息else if (type == 'polygon') {$("#type").text("几何图形类型: 多边形");if (drawlayer._latlngs[0].length > 0) {for (var latlngslength = 0; latlngslength < drawlayer._latlngs[0].length; latlngslength++) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlngs[0][latlngslength].lat + "," + drawlayer._latlngs[0][latlngslength].lng + "</font><br>"}}}//获取矩形几何信息else if (type == 'rectangle') {if (drawlayer._latlngs[0].length) {$("#type").text("几何图形类型: 矩形");for (var latlngslength = 0; latlngslength < drawlayer._latlngs[0].length; latlngslength++) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlngs[0][latlngslength].lat + "," + drawlayer._latlngs[0][latlngslength].lng + "</font><br>"}}}//获取圆几何信息else if (type == 'circle') {$("#type").text("几何图形类型: 圆");if (drawlayer._radius > 0) {//获取几何信息latlngsStr += "<font>圆心坐标:" + drawlayer._latlng.lat + "," + drawlayer._latlng.lng + "</font><br>" + "<font>半径:" + drawlayer._radius + "</font>"}}//获取标记几何信息else if (type == 'marker') {$("#type").text("几何图形类型: 标注");if (drawlayer._latlng != "" && drawlayer._latlng != null && drawlayer._latlng != undefined) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlng.lat + "," + drawlayer._latlng.lng + "</font><br>"}}//获取圆标记几何信息else if (type == 'circlemarker') {$("#type").text("几何图形类型: 圆形标注");if (drawlayer._latlng != "" && drawlayer._latlng != null && drawlayer._latlng != undefined) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlng.lat + "," + drawlayer._latlng.lng + "</font><br>"}}//显示信息document.getElementById('result').innerHTML = latlngsStr;});

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: 80%;height: 100%;overflow: hidden;}</style>
</head><body ><div id="map"></div><div id="info" style="position: absolute; top: 0px; right: 10px; height: 200px; width: 350px; z-index: 1; border: solid 1px;background-color:white;"><label id="type">几何图形类型:&nbsp;</label><p style="margin:0">图形几何信息如下:&nbsp;</p><div id="result" style="height: 100px; font-family: 微软雅黑; font-size: 14px; font-weight: bold;"></div></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" src="./js/jquery/jquery-1.11.2.min.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') {//显示Popupdrawlayer.bindPopup('A popup!');}//显示图层drawnItems.addLayer(drawlayer);//几何信息字符串var latlngsStr = "";//获取线几何信息if (type == "polyline") {$("#type").text("几何图形类型: 线");if (drawlayer.editing.latlngs[0].length > 0) {for (var latlngslength = 0; latlngslength < drawlayer.editing.latlngs[0].length; latlngslength++) {//获取几何信息latlngsStr += "<font>" + drawlayer.editing.latlngs[0][latlngslength].lat + "," + drawlayer.editing.latlngs[0][latlngslength].lng + "</font><br>"}}}//获取多边形几何信息else if (type == 'polygon') {$("#type").text("几何图形类型: 多边形");if (drawlayer._latlngs[0].length > 0) {for (var latlngslength = 0; latlngslength < drawlayer._latlngs[0].length; latlngslength++) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlngs[0][latlngslength].lat + "," + drawlayer._latlngs[0][latlngslength].lng + "</font><br>"}}}//获取矩形几何信息else if (type == 'rectangle') {if (drawlayer._latlngs[0].length) {$("#type").text("几何图形类型: 矩形");for (var latlngslength = 0; latlngslength < drawlayer._latlngs[0].length; latlngslength++) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlngs[0][latlngslength].lat + "," + drawlayer._latlngs[0][latlngslength].lng + "</font><br>"}}}//获取圆几何信息else if (type == 'circle') {$("#type").text("几何图形类型: 圆");if (drawlayer._radius > 0) {//获取几何信息latlngsStr += "<font>圆心坐标:" + drawlayer._latlng.lat + "," + drawlayer._latlng.lng + "</font><br>" + "<font>半径:" + drawlayer._radius + "</font>"}}//获取标记几何信息else if (type == 'marker') {$("#type").text("几何图形类型: 标注");if (drawlayer._latlng != "" && drawlayer._latlng != null && drawlayer._latlng != undefined) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlng.lat + "," + drawlayer._latlng.lng + "</font><br>"}}//获取圆标记几何信息else if (type == 'circlemarker') {$("#type").text("几何图形类型: 圆形标注");if (drawlayer._latlng != "" && drawlayer._latlng != null && drawlayer._latlng != undefined) {//获取几何信息latlngsStr += "<font>" + drawlayer._latlng.lat + "," + drawlayer._latlng.lng + "</font><br>"}}//显示信息document.getElementById('result').innerHTML = latlngsStr;});</script>
</body></html>​

Leaflet中使用draw绘制时获取图形的几何信息相关推荐

  1. ArcGIS for Android 中实现要素绘制时固定MapView

    最近在项目中遇到这么一个情况,在MapView中要求实现绘制点.线.面. 在这里面就会遇到这么一个问题,绘制折线和多边形型时,每点击一个点屏幕就会跟着晃,使用起来很不方便(使用Note2 触控笔),所 ...

  2. python绘制动态变化的图_用Jupyter Noteb中的matplotlib绘制动态变化图形

    我一直在寻找一个很好的解决方案,其中一个线程正在泵送数据,我们希望Jupyter笔记本不断更新图形,而不阻止任何事情.在查阅了十几个相关答案后,以下是一些发现: 小心 如果你想要一个实时的图表,不要使 ...

  3. 从源码解析-Android中View的绘制流程及performTraversals方法

    谈谈Activity的setContentView是怎么加载XML视图的 谈谈Activity的View怎么与View绘制工具ViewRootImpl关联的 在前面两篇文章中分析了View是如何跟绘制 ...

  4. 【MATLAB】基本绘图 ( 句柄值 | 对象句柄值获取 | 创建对象时获取句柄值 | 函数获取句柄值 | 获取 / 设置 对象属性 | 获取对象属性 )

    文章目录 一.对象句柄值获取 1.句柄值 2.创建对象时获取句柄值 3.函数获取句柄值 4.获取 / 设置 对象属性 二.获取对象属性 1.获取 线 对象属性 2.获取 坐标轴 对象属性 一.对象句柄 ...

  5. android获取当前位置经纬度,Android中通过GPS或NetWork获取当前位置的经纬度

    今天在Android项目中要实现一个通过GPS或NetWork来获取当前移动终端设备的经纬度功能.要实现该功能要用到Android Framework 中的 LocationManager 类.下面我 ...

  6. 实现微信打开网页时,获取当前微信用户信息(Java)(基于snsapi_userinfo方式)

    /*** 1 第一步:用户同意授权,获取code* 2 第二步:通过code换取网页授权access_token* 3 第三步:刷新access_token(如果需要)* 4 第四步:拉取用户信息(需 ...

  7. 用python获取图形对象的坐标集合

    之前在初步学习python的过程中,学到了获取图形对象所有点坐标的方法 === --获取矩形对象所占坐标的集合 ____设一矩形c,其左上角的坐标为(x',y'),宽度为w,高度为h,则该矩形对象所有 ...

  8. react中解决下拉时,多个tooltip包裹的列表中,hover时,tooltip快速触发,闪烁问题

    闪烁问题,是由于没有用div包裹元素 下拉时不让hover到的元素触发,停止下拉时才触发tooltip显示 这里就涉及到如何判断滚动中和滚动结束 只需要在滚动时记录下top1,而滚动时节流1000调用 ...

  9. CAD制图的时候,怎样绘制CAD螺旋图形?

    初学CAD绘图设计的小伙伴们,我们在开始接触CAD绘图的时候都需要先从简单的CAD几何图形开始练习,循序渐进.这样才能逐渐熟练地掌握好各种CAD图形的绘制,例如绘制矩形.圆形.螺旋形等.今天我就在这里 ...

最新文章

  1. 吉大c语言程序设计作业一,吉林大学历年C语言程序设计试题及答案.doc
  2. 详细讲述STP过程【转自56cto.com】
  3. 在PowerDesigner中设计概念模型
  4. 这是什么操作?java中的变量竟然可以先使用后声明?
  5. 第十七期:详解大数据处理中的Lambda架构和Kappa架构
  6. php 一些个 常用 函数
  7. ubuntu不会自动休眠_关机、睡眠、休眠有啥区别?微软说非特殊情况不要关机
  8. Error: A JNI error has occurred, please check your installation and try again
  9. 一个不明觉厉的貌似包含很多linux资料索引的网页
  10. 友华PT921G光猫实现黑群晖外网唤醒
  11. 逻辑回归算法原理MATLAB,逻辑回归算法(MATLAB)
  12. 2022-2028全球与中国电动气动转换器市场现状及未来发展趋势
  13. Kali利用metasploit 生成后门程序,操作目标主机cmd
  14. Kubernetes 进阶训练营 控制器
  15. LoadRunner-登陆web tours订票网站,预订一张机票后退出-1
  16. 台式机安装linux软件,台式机如何安装Ubuntu
  17. 新手初学者入门2000左右预算?哪些单板民谣吉他值得推荐。
  18. 微软开放跨平台联机 索尼:我们早就这么做了
  19. B站台湾大学郭彦甫|MATLAB 学习笔记|08 图像处理I Image Processing
  20. 2021最新 MySQL面试题精选(附刷题小程序)

热门文章

  1. 微信企业号或微信公众号调用扫一扫功能
  2. 辽宁大学计算机专业专硕分数线,辽宁大学社会工作硕士历年复试分数线_社会工作考研分数线_复试线 - 希赛网...
  3. 孟子曰:吾善养吾浩然之气
  4. iphone视频格式转换
  5. pl-sql中select * from dual 这个dual是什么
  6. 用QT制作聆心云数据可视化平台
  7. 前端jsp通过点击按钮发送一个后端请求,并将表单数据一并发送到后端
  8. stm32f103c8t6最小系统板+nrf24l01制作简易船模
  9. Git学习笔记 — 借鉴bilibili 鱼C-小甲鱼的教学视频
  10. teamviewer 安卓版本提示无法连接网络,对方不在线