打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
leaflet实现简单量算工具功能(附源码下载)

前言

leaflet 入门开发系列环境知识点了解:

内容概览

leaflet实现简单量算工具功能
源代码demo下载

实现借助了一个插件leaflet-measure-path,插件的下载地址:https://github.com/ProminentEdge/leaflet-measure-path

效果图如下:

  • 部分核心代码,完整的见源码demo下载

// 面积测量方法var areaMeasure = {
points:[],//markers:[],color: "red",
layers: L.layerGroup(),
polygon: null,
marker:null,
init:function(){
areaMeasure.points = [];
areaMeasure.polygon = null;
areaMeasure.marker = null;
map.on('click', areaMeasure.click).on('dblclick', areaMeasure.dblclick);
},
close:function(latlng){
areaMeasure.marker = L.marker(latlng, { icon: deleteIcon }).addTo(map).on("click", function (e) {//console.log('marker',e);if(areaMeasure.polygon)
map.removeLayer(areaMeasure.polygon); 
if(areaMeasure.marker)
areaMeasure.marker.remove();
});//areaMeasure.markers.push(marker); },
click:function(e){
map.doubleClickZoom.disable();// 添加点信息areaMeasure.points.push(e.latlng);// 添加面map.on('mousemove', areaMeasure.mousemove);
},
mousemove:function(e){
areaMeasure.points.push(e.latlng);if(areaMeasure.polygon)
map.removeLayer(areaMeasure.polygon);
areaMeasure.polygon = L.polygon(areaMeasure.points,{showMeasurements: true, color: 'red'});//areaMeasure.polygon.addTo(map);areaMeasure.polygon.addTo(areaMeasure.layers);
areaMeasure.layers.addTo(map);
areaMeasure.points.pop();
},
dblclick:function(e){ // 双击结束console.log('双击结束',e);
areaMeasure.polygon.addTo(areaMeasure.layers);
areaMeasure.close(e.latlng);//areaMeasure.polygon.enableEdit();//map.on('editable:vertex:drag editable:vertex:deleted', areaMeasure.polygon.updateMeasurements, areaMeasure.polygon);map.off('click', areaMeasure.click).off('mousemove', areaMeasure.mousemove).off('dblclick', areaMeasure.dblclick);
},
destory:function(){if(areaMeasure.polygon)
map.removeLayer(areaMeasure.polygon); 
if(areaMeasure.marker)
areaMeasure.marker.remove();
}
} 
// 距离测量方法var distanceMeasure = {
points:[],//markers:[],color: "red",
layers: L.layerGroup(),
polyline: null,
marker:null,
init:function(){
distanceMeasure.points = [];
distanceMeasure.polyline = null;
distanceMeasure.marker = null;
map.on('click', distanceMeasure.click).on('dblclick', distanceMeasure.dblclick);
},
close:function(latlng){
distanceMeasure.marker = L.marker(latlng, { icon: deleteIcon }).addTo(map).on("click", function (e) {//console.log('marker',e);if(distanceMeasure.polyline)
map.removeLayer(distanceMeasure.polyline); 
if(distanceMeasure.marker)
distanceMeasure.marker.remove();
});
 
 
},
click:function(e){
map.doubleClickZoom.disable();// 添加点信息distanceMeasure.points.push(e.latlng);// 添加线map.on('mousemove', distanceMeasure.mousemove);
},
mousemove:function(e){
distanceMeasure.points.push(e.latlng);if(distanceMeasure.polyline)
map.removeLayer(distanceMeasure.polyline);
distanceMeasure.polyline = L.polyline(distanceMeasure.points,{showMeasurements: true, color: 'red'});
distanceMeasure.polyline.addTo(distanceMeasure.layers);
distanceMeasure.layers.addTo(map);
distanceMeasure.points.pop();
},
dblclick:function(e){ // 双击结束console.log('双击结束',e);
distanceMeasure.polyline.addTo(distanceMeasure.layers);
distanceMeasure.close(e.latlng);//distanceMeasure.polygon.enableEdit();//map.on('editable:vertex:drag editable:vertex:deleted', distanceMeasure.polygon.updateMeasurements, distanceMeasure.polygon);map.off('click', distanceMeasure.click).off('mousemove', distanceMeasure.mousemove).off('dblclick', distanceMeasure.dblclick);
},
destory:function(){if(distanceMeasure.polyline)
map.removeLayer(distanceMeasure.polyline); 
if(distanceMeasure.marker)
distanceMeasure.marker.remove();
}
}

完整demo源码见小专栏文章尾部小专栏

文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Leaflet官方教程(一)
入门Leaflet之小Demo
leaflet读取tif像素值的两种实现方式(附源码下载)
leaflet结合geoserver利用WFS服务实现图层编辑功能(附源码下载)
乱谈Leaflet的插件在WebGIS中作用
leaflet中如何通过透明度控制layerGroup的显示隐藏
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服