src/pyams_gis/resources/js/Edit.Poly.min.js
changeset 75 a430cc4ae715
parent 74 31687784fa16
child 76 f15face86bcc
--- a/src/pyams_gis/resources/js/Edit.Poly.min.js	Wed Jan 27 15:38:26 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-L.Edit=L.Edit||{};L.Edit.Poly=L.Handler.extend({options:{},initialize:function(b,a){this.latlngs=[b._latlngs];if(b._holes){this.latlngs=this.latlngs.concat(b._holes)}this._poly=b;L.setOptions(this,a);this._poly.on("revert-edited",this._updateLatLngs,this)},_defaultShape:function(){if(!L.Polyline._flat){return this._poly._latlngs}return L.Polyline._flat(this._poly._latlngs)?this._poly._latlngs:this._poly._latlngs[0]},_eachVertexHandler:function(b){for(var a=0;a<this._verticesHandlers.length;a++){b(this._verticesHandlers[a])}},addHooks:function(){this._initHandlers();this._eachVertexHandler(function(a){a.addHooks()})},removeHooks:function(){this._eachVertexHandler(function(a){a.removeHooks()})},updateMarkers:function(){this._eachVertexHandler(function(a){a.updateMarkers()})},_initHandlers:function(){this._verticesHandlers=[];for(var a=0;a<this.latlngs.length;a++){this._verticesHandlers.push(new L.Edit.PolyVerticesEdit(this._poly,this.latlngs[a],this.options))}},_updateLatLngs:function(a){this.latlngs=[a.layer._latlngs];if(a.layer._holes){this.latlngs=this.latlngs.concat(a.layer._holes)}}});L.Edit.PolyVerticesEdit=L.Handler.extend({options:{icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"}),drawError:{color:"#b00b00",timeout:1000}},initialize:function(c,a,b){if(L.Browser.touch){this.options.icon=this.options.touchIcon}this._poly=c;if(b&&b.drawError){b.drawError=L.Util.extend({},this.options.drawError,b.drawError)}this._latlngs=a;L.setOptions(this,b)},_defaultShape:function(){if(!L.Polyline._flat){return this._latlngs}return L.Polyline._flat(this._latlngs)?this._latlngs:this._latlngs[0]},addHooks:function(){var a=this._poly;if(!(a instanceof L.Polygon)){a.options.fill=false;if(a.options.editing){a.options.editing.fill=false}}a.setStyle(a.options.editing);if(this._poly._map){this._map=this._poly._map;if(!this._markerGroup){this._initMarkers()}this._poly._map.addLayer(this._markerGroup)}},removeHooks:function(){var a=this._poly;a.setStyle(a.options.original);if(a._map){a._map.removeLayer(this._markerGroup);delete this._markerGroup;delete this._markers}},updateMarkers:function(){this._markerGroup.clearLayers();this._initMarkers()},_initMarkers:function(){if(!this._markerGroup){this._markerGroup=new L.LayerGroup()}this._markers=[];var b=this._defaultShape(),g,f,a,c;for(g=0,a=b.length;g<a;g++){c=this._createMarker(b[g],g);c.on("click",this._onMarkerClick,this);this._markers.push(c)}var e,d;for(g=0,f=a-1;g<a;f=g++){if(g===0&&!(L.Polygon&&(this._poly instanceof L.Polygon))){continue}e=this._markers[f];d=this._markers[g];this._createMiddleMarker(e,d);this._updatePrevNext(e,d)}},_createMarker:function(c,b){var a=new L.Marker.Touch(c,{draggable:true,icon:this.options.icon,});a._origLatLng=c;a._index=b;a.on("dragstart",this._onMarkerDragStart,this).on("drag",this._onMarkerDrag,this).on("dragend",this._fireEdit,this).on("touchmove",this._onTouchMove,this).on("touchend",this._fireEdit,this).on("MSPointerMove",this._onTouchMove,this).on("MSPointerUp",this._fireEdit,this);this._markerGroup.addLayer(a);return a},_onMarkerDragStart:function(){this._poly.fire("editstart")},_spliceLatLngs:function(){var a=this._defaultShape();var b=[].splice.apply(a,arguments);this._poly._convertLatLngs(a,true);this._poly.redraw();return b},_removeMarker:function(a){var b=a._index;this._markerGroup.removeLayer(a);this._markers.splice(b,1);this._spliceLatLngs(b,1);this._updateIndexes(b,-1);a.off("dragstart",this._onMarkerDragStart,this).off("drag",this._onMarkerDrag,this).off("dragend",this._fireEdit,this).off("touchmove",this._onMarkerDrag,this).off("touchend",this._fireEdit,this).off("click",this._onMarkerClick,this).off("MSPointerMove",this._onTouchMove,this).off("MSPointerUp",this._fireEdit,this)},_fireEdit:function(){this._poly.edited=true;this._poly.fire("edit");this._poly._map.fire(L.Draw.Event.EDITVERTEX,{layers:this._markerGroup,poly:this._poly})},_onMarkerDrag:function(f){var a=f.target;var d=this._poly;L.extend(a._origLatLng,a._latlng);if(a._middleLeft){a._middleLeft.setLatLng(this._getMiddleLatLng(a._prev,a))}if(a._middleRight){a._middleRight.setLatLng(this._getMiddleLatLng(a,a._next))}if(d.options.poly){var c=d._map._editTooltip;if(!d.options.poly.allowIntersection&&d.intersects()){var b=d.options.color;d.setStyle({color:this.options.drawError.color});if(L.version.indexOf("0.7")!==0){a.dragging._draggable._onUp(f)}this._onMarkerClick(f);if(c){c.updateContent({text:L.drawLocal.draw.handlers.polyline.error})}setTimeout(function(){d.setStyle({color:b});if(c){c.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext})}},1000)}}this._poly.redraw();this._poly.fire("editdrag")},_onMarkerClick:function(c){var b=L.Polygon&&(this._poly instanceof L.Polygon)?4:3,a=c.target;if(this._defaultShape().length<b){return}this._removeMarker(a);this._updatePrevNext(a._prev,a._next);if(a._middleLeft){this._markerGroup.removeLayer(a._middleLeft)}if(a._middleRight){this._markerGroup.removeLayer(a._middleRight)}if(a._prev&&a._next){this._createMiddleMarker(a._prev,a._next)}else{if(!a._prev){a._next._middleLeft=null}else{if(!a._next){a._prev._middleRight=null}}}this._fireEdit()},_onTouchMove:function(c){var b=this._map.mouseEventToLayerPoint(c.originalEvent.touches[0]),d=this._map.layerPointToLatLng(b),a=c.target;L.extend(a._origLatLng,d);if(a._middleLeft){a._middleLeft.setLatLng(this._getMiddleLatLng(a._prev,a))}if(a._middleRight){a._middleRight.setLatLng(this._getMiddleLatLng(a,a._next))}this._poly.redraw();this.updateMarkers()},_updateIndexes:function(a,b){this._markerGroup.eachLayer(function(c){if(c._index>a){c._index+=b}})},_createMiddleMarker:function(f,d){var g=this._getMiddleLatLng(f,d),a=this._createMarker(g),e,c,b;a.setOpacity(0.6);f._middleRight=d._middleLeft=a;c=function(){a.off("touchmove",c,this);var h=d._index;a._index=h;a.off("click",e,this).on("click",this._onMarkerClick,this);g.lat=a.getLatLng().lat;g.lng=a.getLatLng().lng;this._spliceLatLngs(h,0,g);this._markers.splice(h,0,a);a.setOpacity(1);this._updateIndexes(h,1);d._index++;this._updatePrevNext(f,a);this._updatePrevNext(a,d);this._poly.fire("editstart")};b=function(){a.off("dragstart",c,this);a.off("dragend",b,this);a.off("touchmove",c,this);this._createMiddleMarker(f,a);this._createMiddleMarker(a,d)};e=function(){c.call(this);b.call(this);this._fireEdit()};a.on("click",e,this).on("dragstart",c,this).on("dragend",b,this).on("touchmove",c,this);this._markerGroup.addLayer(a)},_updatePrevNext:function(b,a){if(b){b._next=a}if(a){a._prev=b}},_getMiddleLatLng:function(e,c){var b=this._poly._map,d=b.project(e.getLatLng()),a=b.project(c.getLatLng());return b.unproject(d._add(a)._divideBy(2))}});L.Polyline.addInitHook(function(){if(this.editing){return}if(L.Edit.Poly){this.editing=new L.Edit.Poly(this,this.options.poly);if(this.options.editable){this.editing.enable()}}this.on("add",function(){if(this.editing&&this.editing.enabled()){this.editing.addHooks()}});this.on("remove",function(){if(this.editing&&this.editing.enabled()){this.editing.removeHooks()}})});
\ No newline at end of file