派生自 wuyushui/SewerAndRainNetwork

zhangshuaibao
2021-04-08 3bc191973a0a67cbc8c0d77d92ea1a807555aa6a
src/components/plugin/MeaSure.js
@@ -1,170 +1,170 @@
/* eslint-disable */
// 面积测量方法
var areaMeasure = {
  points: [],
// markers:[],
  color: 'red',
  L: null,
  layers: null,
  polygon: null,
  marker: null,
  init: function (map, L) {
    areaMeasure.L = L
    areaMeasure.map = map
    areaMeasure.points = []
    areaMeasure.polygon = null
    areaMeasure.marker = null
    areaMeasure.layers = L.layerGroup()
    areaMeasure.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) {
    areaMeasure.map.doubleClickZoom.disable()
// 添加点信息
    areaMeasure.points.push(e.latlng)
// 添加面
    areaMeasure.map.on('mousemove', areaMeasure.mousemove)
  },
  mousemove: function (e) {
    areaMeasure.points.push(e.latlng)
    if (areaMeasure.polygon) {
      areaMeasure.map.removeLayer(areaMeasure.polygon)
    }
    areaMeasure.polygon = areaMeasure.L.polygon(areaMeasure.points, {
      showMeasurements: true,
      color: 'red'
    })
//areaMeasure.polygon.addTo(map);
    areaMeasure.polygon.addTo(areaMeasure.layers)
    areaMeasure.layers.addTo(areaMeasure.map)
    areaMeasure.points.pop()
  },
  dblclick: function (e) { // 双击结束
    console.log('双击结束', e)
    areaMeasure.polygon.enableEdit()
    areaMeasure.polygon.dragging.disable()
    areaMeasure.map.on('editable:vertex:drag editable:vertex:deleted', areaMeasure.polygon.updateMeasurements, areaMeasure.polygon)
    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);
    areaMeasure.map.off('click', areaMeasure.click).off('mousemove', areaMeasure.mousemove).off('dblclick', areaMeasure.dblclick)
  },
  destory: function () {
    if (areaMeasure.polygon) {
      areaMeasure.map.removeLayer(areaMeasure.polygon)
    }
    if (areaMeasure.marker) {
      areaMeasure.marker.remove()
    }
    if (areaMeasure.layers) {
      areaMeasure.layers.clearLayers()
    }
  }
}
// 距离测量方法
var distanceMeasure = {
  points: [],
// markers:[],
  color: 'blue',
  L: null,
  map: null,
  layers: null,
  polyline: null,
  marker: null,
  init: function (map, L) {
    // console.log(L)
    distanceMeasure.L = L
    distanceMeasure.map = map
    distanceMeasure.points = []
    distanceMeasure.polyline = null
    distanceMeasure.marker = null
    distanceMeasure.layers = L.layerGroup()
    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) {
    distanceMeasure.map.doubleClickZoom.disable()
// 添加点信息
    distanceMeasure.points.push(e.latlng)
// 添加线
    distanceMeasure.map.on('mousemove', distanceMeasure.mousemove)
  },
  mousemove: function (e) {
    distanceMeasure.points.push(e.latlng)
    if (distanceMeasure.polyline) {
      distanceMeasure.map.removeLayer(distanceMeasure.polyline)
    }
    distanceMeasure.polyline = distanceMeasure.L.polyline(distanceMeasure.points, {
      showMeasurements: true,
      color: 'red'
    })
    distanceMeasure.polyline.addTo(distanceMeasure.layers)
    // distanceMeasure.polyline.enableEdit()
    distanceMeasure.layers.addTo(distanceMeasure.map)
    distanceMeasure.points.pop()
  },
  dblclick: function (e) { // 双击结束
    console.log('双击结束', e)
    distanceMeasure.polyline.enableEdit()
    distanceMeasure.polyline.dragging.disable()
    distanceMeasure.polyline.addTo(distanceMeasure.layers)
    distanceMeasure.map.on('editable:vertex:drag editable:vertex:deleted', distanceMeasure.polyline.updateMeasurements, distanceMeasure.polyline)
    distanceMeasure.close(e.latlng)
    distanceMeasure.map.off('click', distanceMeasure.click).off('mousemove', distanceMeasure.mousemove).off('dblclick', distanceMeasure.dblclick)
  },
  destory: function () {
    if (distanceMeasure.polyline) {
      distanceMeasure.map.removeLayer(distanceMeasure.polyline)
    }
    if (distanceMeasure.marker) {
      distanceMeasure.marker.remove()
    }
    if (distanceMeasure.layers) {
      distanceMeasure.layers.clearLayers()
    }
  }
}
const startMeasureArea = function (map, L) {
  areaMeasure.destory()
  areaMeasure.init(map, L)
}
const startMeasureLen = function (map, L) {
  distanceMeasure.destory()
  distanceMeasure.init(map, L)
}
const clearMeasure = function () {
  areaMeasure.destory()
  distanceMeasure.destory()
}
export default {
  startMeasureArea,
  startMeasureLen,
  clearMeasure
}
/* eslint-disable */
// 面积测量方法
var areaMeasure = {
  points: [],
// markers:[],
  color: 'red',
  L: null,
  layers: null,
  polygon: null,
  marker: null,
  init: function (map, L) {
    areaMeasure.L = L
    areaMeasure.map = map
    areaMeasure.points = []
    areaMeasure.polygon = null
    areaMeasure.marker = null
    areaMeasure.layers = L.layerGroup()
    areaMeasure.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) {
    areaMeasure.map.doubleClickZoom.disable()
// 添加点信息
    areaMeasure.points.push(e.latlng)
// 添加面
    areaMeasure.map.on('mousemove', areaMeasure.mousemove)
  },
  mousemove: function (e) {
    areaMeasure.points.push(e.latlng)
    if (areaMeasure.polygon) {
      areaMeasure.map.removeLayer(areaMeasure.polygon)
    }
    areaMeasure.polygon = areaMeasure.L.polygon(areaMeasure.points, {
      showMeasurements: true,
      color: 'red'
    })
//areaMeasure.polygon.addTo(map);
    areaMeasure.polygon.addTo(areaMeasure.layers)
    areaMeasure.layers.addTo(areaMeasure.map)
    areaMeasure.points.pop()
  },
  dblclick: function (e) { // 双击结束
    console.log('双击结束', e)
    areaMeasure.polygon.enableEdit()
    areaMeasure.polygon.dragging.disable()
    areaMeasure.map.on('editable:vertex:drag editable:vertex:deleted', areaMeasure.polygon.updateMeasurements, areaMeasure.polygon)
    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);
    areaMeasure.map.off('click', areaMeasure.click).off('mousemove', areaMeasure.mousemove).off('dblclick', areaMeasure.dblclick)
  },
  destory: function () {
    if (areaMeasure.polygon) {
      areaMeasure.map.removeLayer(areaMeasure.polygon)
    }
    if (areaMeasure.marker) {
      areaMeasure.marker.remove()
    }
    if (areaMeasure.layers) {
      areaMeasure.layers.clearLayers()
    }
  }
}
// 距离测量方法
var distanceMeasure = {
  points: [],
// markers:[],
  color: 'blue',
  L: null,
  map: null,
  layers: null,
  polyline: null,
  marker: null,
  init: function (map, L) {
    // console.log(L)
    distanceMeasure.L = L
    distanceMeasure.map = map
    distanceMeasure.points = []
    distanceMeasure.polyline = null
    distanceMeasure.marker = null
    distanceMeasure.layers = L.layerGroup()
    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) {
    distanceMeasure.map.doubleClickZoom.disable()
// 添加点信息
    distanceMeasure.points.push(e.latlng)
// 添加线
    distanceMeasure.map.on('mousemove', distanceMeasure.mousemove)
  },
  mousemove: function (e) {
    distanceMeasure.points.push(e.latlng)
    if (distanceMeasure.polyline) {
      distanceMeasure.map.removeLayer(distanceMeasure.polyline)
    }
    distanceMeasure.polyline = distanceMeasure.L.polyline(distanceMeasure.points, {
      showMeasurements: true,
      color: 'red'
    })
    distanceMeasure.polyline.addTo(distanceMeasure.layers)
    // distanceMeasure.polyline.enableEdit()
    distanceMeasure.layers.addTo(distanceMeasure.map)
    distanceMeasure.points.pop()
  },
  dblclick: function (e) { // 双击结束
    console.log('双击结束', e)
    distanceMeasure.polyline.enableEdit()
    distanceMeasure.polyline.dragging.disable()
    distanceMeasure.polyline.addTo(distanceMeasure.layers)
    distanceMeasure.map.on('editable:vertex:drag editable:vertex:deleted', distanceMeasure.polyline.updateMeasurements, distanceMeasure.polyline)
    distanceMeasure.close(e.latlng)
    distanceMeasure.map.off('click', distanceMeasure.click).off('mousemove', distanceMeasure.mousemove).off('dblclick', distanceMeasure.dblclick)
  },
  destory: function () {
    if (distanceMeasure.polyline) {
      distanceMeasure.map.removeLayer(distanceMeasure.polyline)
    }
    if (distanceMeasure.marker) {
      distanceMeasure.marker.remove()
    }
    if (distanceMeasure.layers) {
      distanceMeasure.layers.clearLayers()
    }
  }
}
const startMeasureArea = function (map, L) {
  areaMeasure.destory()
  areaMeasure.init(map, L)
}
const startMeasureLen = function (map, L) {
  distanceMeasure.destory()
  distanceMeasure.init(map, L)
}
const clearMeasure = function () {
  areaMeasure.destory()
  distanceMeasure.destory()
}
export default {
  startMeasureArea,
  startMeasureLen,
  clearMeasure
}