import L from 'leaflet';import 'leaflet-draw'class DrawPlug {    constructor(map,measureGroup) {        //测距侧面        this.DRAWING = false; //是否正在绘制        this.DRAWLAYERS = [];        this.BarDRAWLAYERS = [];        this.ISMEASURE = true; //是否是量距        this.MEASURETOOLTIP; //量距提醒        this.MEASUREAREATOOLTIP; //量面提醒        this.MEASURERESULT = 0; //测量后果        this.DRAWPOLYLINE; //绘制的折线        this.DRAWMOVEPOLYLINE; //绘制过程中的折线        this.DRAWPOLYLINEPOINTS = []; //绘制的折线的节点集        this.DRAWPOLYGON; //绘制的面        this.DRAWMOVEPOLYGON; //绘制过程中的面        this.DRAWPOLYGONPOINTS = []; //绘制的面的节点集        this.map = map;        this.measureGroup = measureGroup;    }    startDrawLine() {        let that = this        that.MEASURERESULT = 0; //测量后果        that.map.getContainer().style.cursor = 'crosshair';        var shapeOptions = {                color: '#3388ff',                weight: 3,                opacity: 0.8,                fill: false,                clickable: true            }        that.DRAWPOLYLINE = new L.Polyline([], shapeOptions); //绘制的折线        that.measureGroup.addLayer(that.DRAWPOLYLINE);        if (that.ISMEASURE) { //是否是量距            that.MEASURETOOLTIP = new L.Tooltip(that.map); //量距提醒        }        that.map.on('mousedown', onClick);        that.map.on('dblclick', onDoubleClick);        function onClick(e) {            console.log('onClick');            that.DRAWING = true; //是否正在绘制            that.DRAWPOLYLINEPOINTS.push(e.latlng); //绘制的折线的节点集            if (that.DRAWPOLYLINEPOINTS.length > 1 && that.ISMEASURE) { //是否是量距                that.MEASURERESULT += e.latlng.distanceTo(that.DRAWPOLYLINEPOINTS[that.DRAWPOLYLINEPOINTS.length - 2]);            }            that.DRAWPOLYLINE.addLatLng(e.latlng); //绘制的折线            that.map.on('mousemove', onMove);        }        function onMove(e) {            if (that.DRAWING) { //是否正在绘制                if (that.DRAWMOVEPOLYLINE != undefined && that.DRAWMOVEPOLYLINE != null) { //绘制过程中的折线                    that.measureGroup.removeLayer(that.DRAWMOVEPOLYLINE);                }                var prevPoint = that.DRAWPOLYLINEPOINTS[that.DRAWPOLYLINEPOINTS.length - 1];                that.DRAWMOVEPOLYLINE = new L.Polyline([prevPoint, e.latlng], shapeOptions);                that.measureGroup.addLayer(that.DRAWMOVEPOLYLINE);                if (that.ISMEASURE) {                    var distance = that.MEASURERESULT + e.latlng.distanceTo(that.DRAWPOLYLINEPOINTS[that.DRAWPOLYLINEPOINTS.length - 1]);                    console.log(distance);                }            }        }        function onDoubleClick(e) {            that.map.getContainer().style.cursor = '';            /*显示两点间隔*/            var distance = that.MEASURERESULT + e.latlng.distanceTo(that.DRAWPOLYLINEPOINTS[that.DRAWPOLYLINEPOINTS.length - 1]);                        var myIcon = L.divIcon({                // html: (distance / 1000).toFixed(2) + "公里",                className: 'my-div-icon',                html:"<div>"+"<p>"+(distance / 1000).toFixed(2)+"KM</p>"+"</div>",                iconSize:26            });            for(let i=0;i<that.DRAWPOLYLINEPOINTS.length-2;i++){                let distance_cust = that.DRAWPOLYLINEPOINTS[i].distanceTo(that.DRAWPOLYLINEPOINTS[i+1]);                            let myIcon_cust = L.divIcon({                    // html: (distance / 1000).toFixed(2) + "公里",                    className: 'my-div-icon',                    html:"<div>"+"<p>"+(distance_cust / 1000).toFixed(2)+"KM</p>"+"</div>",                    iconSize:26                });                let site_c = L.polyline([that.DRAWPOLYLINEPOINTS[i],that.DRAWPOLYLINEPOINTS[i+1]],{color:'rgba(0,0,0,0)',}).addTo(that.measureGroup);                let as = site_c.getCenter()                let c = new L.Marker(as, { draggable: false,icon: myIcon_cust});                that.measureGroup.addLayer(c)            }            let marker = new L.Marker(e.latlng, { draggable: false,icon: myIcon});            that.measureGroup.addLayer(marker)            if (that.DRAWING) {                if (that.DRAWMOVEPOLYLINE != undefined && that.DRAWMOVEPOLYLINE != null) {                    that.map.removeLayer(that.DRAWMOVEPOLYLINE);                    that.DRAWMOVEPOLYLINE = null;                }                that.BarDRAWLAYERS.push(that.DRAWPOLYLINE);                that.DRAWPOLYLINEPOINTS = [];                that.DRAWING = false;                that.ISMEASURE = false;                that.map.off('mousedown');                that.map.off('mousemove');                that.map.off('dblclick');            }        }    }    clearLayer(){        let that = this        that.measureGroup.clearLayers()    }    startDrawPolygon() {        let that = this        that.MEASURERESULT = 0;        that.map.getContainer().style.cursor = 'crosshair';        that.map.on('mousedown', function(e) {            that.DRAWING = true;            that.DRAWPOLYGONPOINTS.push(e.latlng);            that.DRAWPOLYGON.addLatLng(e.latlng);        });        that.map.on('mousemove', function(e) {            if (that.DRAWING) {                if (that.DRAWMOVEPOLYGON != undefined && that.DRAWMOVEPOLYGON != null) {                    that.map.removeLayer(that.DRAWMOVEPOLYGON);                }                var prevPoint = that.DRAWPOLYGONPOINTS[that.DRAWPOLYGONPOINTS.length - 1];                var firstPoint = that.DRAWPOLYGONPOINTS[0];                that.DRAWMOVEPOLYGON = new L.Polygon([firstPoint, prevPoint, e.latlng], shapeOptions);                that.measureGroup.addLayer(that.DRAWMOVEPOLYGON);            }        });        that.map.on('dblclick', function(e) {            that.map.getContainer().style.cursor = '';            var tempPoints = [];            for (var i = 0; i < that.DRAWPOLYGONPOINTS.length; i++) {                tempPoints.push(that.DRAWPOLYGONPOINTS[i]);            }            let as = that.DRAWPOLYGON.getLatLngs()[0]            as.pop()            let last = as[0]            as.push(last)            for(let i=0;i<as.length-1;i++){                let distance_cust = as[i].distanceTo(as[i+1]);                            let myIcon_cust = L.divIcon({                    // html: (distance / 1000).toFixed(2) + "公里",                    className: 'my-div-icon',                    html:"<div>"+"<p>"+(distance_cust / 1000).toFixed(2)+"KM</p>"+"</div>",                    iconSize:26                });                let site_c = L.polyline([as[i],as[i+1]],{color:'rgba(0,0,0,0)',}).addTo(that.measureGroup);                let as_ccc = site_c.getCenter()                let c = new L.Marker(as_ccc, { draggable: false,icon: myIcon_cust});                that.measureGroup.addLayer(c)            }                        console.log(as);            tempPoints.push(e.latlng);            let CC = that.DRAWPOLYGON.getCenter()            var distance = CalArea(tempPoints);            var myIcon = L.divIcon({                html:"<div>"+"<p>"+(distance / 1000000).toFixed(3)+"KM²</p>"+"</div>",                className: 'my-div-icon',                iconSize:26            });            let marker = new L.Marker(CC, { draggable: false,icon:myIcon });            that.measureGroup.addLayer(marker);            // marker.bindPopup("总面积:" + (distance / 1000000).toFixed(3) + '平方公里').openPopup();            if (that.DRAWING) {                if (that.DRAWMOVEPOLYGON != undefined && that.DRAWMOVEPOLYGON != null) {                    that.map.removeLayer(that.DRAWMOVEPOLYGON);                    that.DRAWMOVEPOLYGON = null;                }                that.BarDRAWLAYERS.push(that.DRAWPOLYGON);                that.DRAWPOLYGONPOINTS = [];                that.DRAWING = false;                that.ISMEASURE = false;                that.map.off('mousedown');                that.map.off('mousemove');                that.map.off('dblclick');            }        });        var shapeOptions = {                color: '#3388ff',                weight: 3,                opacity: 0.8,                fill: true,                fillColor: null,                fillOpacity: 0.2,                clickable: true            }        that.DRAWPOLYGON = new L.Polygon([], shapeOptions);        that.measureGroup.addLayer(that.DRAWPOLYGON);        if (that.ISMEASURE) {            that.MEASUREAREATOOLTIP = new L.Tooltip(that.map);        }        function CalArea(latLngs) {            var pointsCount = latLngs.length,                area = 0.0,                d2r = Math.PI / 180,                p1, p2;            if (pointsCount > 2) {                for (var i = 0; i < pointsCount; i++) {                    p1 = latLngs[i];                    p2 = latLngs[(i + 1) % pointsCount];                    area += ((p2.lng - p1.lng) * d2r) *                        (2 + Math.sin(p1.lat * d2r) + Math.sin(p2.lat * d2r));                }                area = area * 6378137.0 * 6378137.0 / 2.0;            }            return Math.abs(area);        }    }}export default DrawPlug