-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathDrawingManager.min.js
More file actions
1 lines (1 loc) · 34.5 KB
/
Copy pathDrawingManager.min.js
File metadata and controls
1 lines (1 loc) · 34.5 KB
1
var BMapLib=window.BMapLib=BMapLib||{},BMAP_DRAWING_MARKER="marker",BMAP_DRAWING_POLYLINE="polyline",BMAP_DRAWING_CIRCLE="circle",BMAP_DRAWING_RECTANGLE="rectangle",BMAP_DRAWING_POLYGON="polygon";!function(){var e,t,n=(e=document.getElementsByTagName("script"),(t=document.currentScript?document.currentScript.src:e[e.length-1].src).substring(0,t.lastIndexOf("/")+1)),i=i||{guid:"$BAIDU$"};window[i.guid]={},i.extend=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},i.lang=i.lang||{},i.lang.guid=function(){return"TANGRAM__"+(window[i.guid]._counter++).toString(36)},window[i.guid]._counter=window[i.guid]._counter||1,window[i.guid]._instances=window[i.guid]._instances||{},i.lang.Class=function(e){this.guid=e||i.lang.guid(),window[i.guid]._instances[this.guid]=this},window[i.guid]._instances=window[i.guid]._instances||{},i.lang.isString=function(e){return"[object String]"==Object.prototype.toString.call(e)},i.lang.isFunction=function(e){return"[object Function]"==Object.prototype.toString.call(e)},i.lang.Class.prototype.toString=function(){return"[object "+(this._className||"Object")+"]"},i.lang.Class.prototype.dispose=function(){for(var e in delete window[i.guid]._instances[this.guid],this)i.lang.isFunction(this[e])||delete this[e];this.disposed=!0},i.lang.Event=function(e,t){this.type=e,this.returnValue=!0,this.target=t||null,this.currentTarget=null},i.lang.Class.prototype.addEventListener=function(e,t,n){if(i.lang.isFunction(t)){!this.__listeners&&(this.__listeners={});var a,o=this.__listeners;if("string"==typeof n&&n){if(/[^\w\-]/.test(n))throw"nonstandard key:"+n;t.hashCode=n,a=n}0!=e.indexOf("on")&&(e="on"+e),"object"!=typeof o[e]&&(o[e]={}),a=a||i.lang.guid(),t.hashCode=a,o[e][a]=t}},i.lang.Class.prototype.removeEventListener=function(e,t){if(i.lang.isFunction(t))t=t.hashCode;else if(!i.lang.isString(t))return;!this.__listeners&&(this.__listeners={}),0!=e.indexOf("on")&&(e="on"+e);var n=this.__listeners;n[e]&&n[e][t]&&delete n[e][t]},i.lang.Class.prototype.dispatchEvent=function(e,t){for(var n in i.lang.isString(e)&&(e=new i.lang.Event(e)),!this.__listeners&&(this.__listeners={}),t=t||{})e[n]=t[n];var a=this.__listeners,o=e.type;if(e.target=e.target||this,e.currentTarget=this,0!=o.indexOf("on")&&(o="on"+o),i.lang.isFunction(this[o])&&this[o].apply(this,arguments),"object"==typeof a[o])for(n in a[o])a[o][n].apply(this,arguments);return e.returnValue},i.lang.inherits=function(e,t,n){var i,a,o=e.prototype,s=new Function;for(i in s.prototype=t.prototype,a=e.prototype=new s,o)a[i]=o[i];e.prototype.constructor=e,e.superClass=t.prototype,"string"==typeof n&&(a._className=n)},i.dom=i.dom||{},i._g=i.dom._g=function(e){return i.lang.isString(e)?document.getElementById(e):e},i.g=i.dom.g=function(e){return"string"==typeof e||e instanceof String?document.getElementById(e):e&&e.nodeName&&(1==e.nodeType||9==e.nodeType)?e:null},i.insertHTML=i.dom.insertHTML=function(e,t,n){var a,o;return(e=i.dom.g(e)).insertAdjacentHTML?e.insertAdjacentHTML(t,n):(a=e.ownerDocument.createRange(),"AFTERBEGIN"==(t=t.toUpperCase())||"BEFOREEND"==t?(a.selectNodeContents(e),a.collapse("AFTERBEGIN"==t)):(a[(o="BEFOREBEGIN"==t)?"setStartBefore":"setEndAfter"](e),a.collapse(o)),a.insertNode(a.createContextualFragment(n))),e},i.ac=i.dom.addClass=function(e,t){e=i.dom.g(e);for(var n=t.split(/\s+/),a=e.className,o=" "+a+" ",s=0,r=n.length;s<r;s++)o.indexOf(" "+n[s]+" ")<0&&(a+=(a?" ":"")+n[s]);return e.className=a,e},i.event=i.event||{},i.event._listeners=i.event._listeners||[],i.on=i.event.on=function(e,t,n){t=t.replace(/^on/i,""),e=i._g(e);var a,o=function(t){n.call(e,t)},s=i.event._listeners,r=i.event._eventFilter,l=t;return t=t.toLowerCase(),r&&r[t]&&(l=(a=r[t](e,t,o)).type,o=a.listener),e.addEventListener?e.addEventListener(l,o,!1):e.attachEvent&&e.attachEvent("on"+l,o),s[s.length]=[e,t,n,o,l],e},i.un=i.event.un=function(e,t,n){e=i._g(e),t=t.replace(/^on/i,"").toLowerCase();for(var a,o,s,r=i.event._listeners,l=r.length,p=!n;l--;)(a=r[l])[1]!==t||a[0]!==e||!p&&a[2]!==n||(o=a[4],s=a[3],e.removeEventListener?e.removeEventListener(o,s,!1):e.detachEvent&&e.detachEvent("on"+o,s),r.splice(l,1));return e},i.getEvent=i.event.getEvent=function(e){return window.event||e},i.getTarget=i.event.getTarget=function(e){return(e=i.getEvent(e)).target||e.srcElement},i.preventDefault=i.event.preventDefault=function(e){(e=i.getEvent(e)).preventDefault?e.preventDefault():e.returnValue=!1},i.stopBubble=i.event.stopBubble=function(e){(e=i.getEvent(e)).stopPropagation?e.stopPropagation():e.cancelBubble=!0},i.browser=i.browser||{},/msie (\d+\.\d)/i.test(navigator.userAgent)&&(i.browser.ie=i.ie=document.documentMode||+RegExp.$1);var a=BMapLib.DrawingManager=function(e,t){e&&(c.push(this),t=t||{},this.overlays=[],this._initialize(e,t))};i.lang.inherits(a,i.lang.Class,"DrawingManager"),a.prototype.open=function(){if(1==this._isOpen)return!0;d(this),this._open()},a.prototype.close=function(){if(0==this._isOpen)return!0;var e=this;this._close(),e._map.removeOverlay(o),setTimeout(function(){e._map.enableDoubleClickZoom()},2e3)},a.prototype.setDrawingMode=function(e){this._drawingType!=e&&(d(this),this._setDrawingMode(e))},a.prototype.getDrawingMode=function(){return this._drawingType},a.prototype.enableCalculate=function(){this._enableCalculate=!0,this._addGeoUtilsLibrary()},a.prototype.disableCalculate=function(){this._enableCalculate=!1},a.prototype.enableSorption=function(){this._enableSorption=!0},a.prototype.disableSorption=function(){this._enableSorption=!1},a.prototype.enableGpc=function(){this._enableGpc=!0},a.prototype.disableGpc=function(){this._enableGpc=!1},a.prototype.getOverlays=function(){return this.overlays},a.prototype.addOverlayData=function(e){return this.overlays.push(e)},a.prototype.setOverlaysData=function(e){return this.overlays=e},a.prototype.clearOverlayData=function(e){this._map;for(var t=0;t<this.overlays.length;t++)if(this.overlays[t]===e)return this.overlays.splice(t,1),e},a.prototype.clearOverlay=function(e){var t=this._map;(e=this.clearOverlayData(e))&&t.removeOverlay(e)},a.prototype.clearOverlays=function(){var e=this._map;this.overlays.forEach(function(t){e.removeOverlay(t)}),this.overlays.length=0},a.prototype._initialize=function(e,t){if(this._map=e,this._opts=t,this._drawingType=t.drawingMode||BMAP_DRAWING_MARKER,t.enableDrawingTool&&this.enableDrawingTool(),void 0!==t.sorptionDistance&&this.setSorptionDistance(t.sorptionDistance),t.enableDrawingTool){var n=new p(this,t.drawingToolOptions);this._drawingTool=n,e.addControl(n)}if(!0===t.enableCalculate?this.enableCalculate():this.disableCalculate(),!0===t.enableLimit){var i=t.limitOptions;this.limit=i}this._opts.confirmVisible=!0===t.confirmVisible,!0===t.enableSorption?this.enableSorption():this.disableSorption(),!0===t.enableGpc?this.enableGpc():this.disableGpc(),this._isOpen=!(!0!==t.isOpen),this._isOpen&&this._open(),this.setPolygonOptions(t.polygonOptions),this.setMarkerOptions(t.markerOptions),this.setCircleOptions(t.circleOptions),this.setPolylineOptions(t.polylineOptions),this.setRectangleOptions(t.rectangleOptions),this.setLabelOptions(t.labelOptions),this.controlButton="right"==t.controlButton?"right":"left"},a.prototype.enableDrawingTool=function(){var e=this._opts;if(!this._drawingTool){var t=new p(this,e.drawingToolOptions);this._drawingTool=t}this._map.addControl(this._drawingTool)},a.prototype.disableDrawingTool=function(){this._drawingTool&&this._map.removeControl(this._drawingTool)},a.prototype.setSorptionDistance=function(e){this._sorptionDistance=e||0},a.prototype.setPolygonOptions=function(e){this.polygonOptions=e||{}},a.prototype.setMarkerOptions=function(e){this.markerOptions=e||{}},a.prototype.setCircleOptions=function(e){this.circleOptions=e||{}},a.prototype.setPolylineOptions=function(e){this.polylineOptions=e||{}},a.prototype.setRectangleOptions=function(e){this.rectangleOptions=e||{}},a.prototype.setLabelOptions=function(e){this.labelOptions=e||{}},a.prototype._open=function(){this._isOpen=!0,this._mask||(this._mask=new l),this._map.addOverlay(this._mask),this._setDrawingMode(this._drawingType)},a.prototype._setDrawingMode=function(e){if(this._drawingType=e,this._isOpen)switch(this._mask.__listeners={},e){case BMAP_DRAWING_MARKER:this._bindMarker();break;case BMAP_DRAWING_CIRCLE:this._bindCircle();break;case BMAP_DRAWING_POLYLINE:case BMAP_DRAWING_POLYGON:this._bindPolylineOrPolygon();break;case BMAP_DRAWING_RECTANGLE:this._bindRectangle()}this._drawingTool&&this._isOpen&&this._drawingTool.setStyleByDrawingMode(e)},a.prototype._close=function(){this._isOpen=!1,this._mask&&this._map.removeOverlay(this._mask),this._drawingTool&&this._drawingTool.setStyleByDrawingMode("hander")},a.prototype._bindMarker=function(){var e=this,t=this._map;this._mask.addEventListener("click",function(n){var i=new BMap.Marker(n.point,e.markerOptions);t.addOverlay(i),e._dispatchOverlayComplete(i)})};var o=null;function s(e,t){this.limit=e.limit,this.type=e.type,this.point=e.point,this.overlay=e.overlay,this.overlays=e.overlays,this.DrawingManager=t}function r(e,t,n,i,a){this.type=e,this.point=t,this.number=n,this.overlay=i,this.DrawingManager=a}function l(){this._enableEdgeMove=!1}function p(e,t){this.drawingManager=e,(t=this.drawingToolOptions=t||{}).hasCustomStyle||(this.defaultAnchor=void 0!==t.anchor?t.anchor:BMAP_ANCHOR_TOP_LEFT,this.defaultOffset=t.offset||new BMap.Size(10,10)),this.defaultDrawingModes=[BMAP_DRAWING_MARKER,BMAP_DRAWING_CIRCLE,BMAP_DRAWING_POLYLINE,BMAP_DRAWING_POLYGON,BMAP_DRAWING_RECTANGLE],t.drawingModes?this.drawingModes=t.drawingModes:this.drawingModes=this.defaultDrawingModes,t.hasCustomStyle&&(t.anchor&&this.setAnchor(t.anchor),t.offset&&this.setOffset(t.offset))}a.prototype._bindCircle=function(){var e=this,t=this._map,a=this._mask,l=null,p=[],c=null,d=null,u=null,g=null,v=null,y=null,m={strokeColor:"#4E6DF1",strokeWeight:2},f=new BMap.Icon(n+"circenter.png",new BMap.Size(20,20)),_=new BMap.Icon("//huiyan.baidu.com/cms/images/DrawingManager/maker-shadow.png",new BMap.Size(21,33)),w=function(n){d=e._map.getDistance(c,n.point).toFixed(0),l.setRadius(e._map.getDistance(c,n.point)),t.removeOverlay(o),(o=new BMap.Label("半径:"+d+"米<br>松开完成绘制",{position:n.point,offset:new BMap.Size(10,10)})).setStyle(e.labelOptions),t.addOverlay(o)},M=function(f){var E=t.getViewport(l.getBounds());if(E.zoom-=1,t.setViewport(E),t.removeOverlay(o),a.disableEdgeMove(),a.removeEventListener("mousemove",w),i.un(document,"mouseup",M),!e._opts.confirmVisible){for(var B=0;B<p.length;B++)t.removeOverlay(p[B]);var O=e._calculate(l,c);return e._dispatchOverlayComplete(l,O),void e.close()}var P=new BMap.Point(l.getBounds().getNorthEast().lng,c.lat);a.hide(),u=new BMap.Marker(P);var L=new BMap.Icon(n+"nbsearch.png",new BMap.Size(40,20));L.setImageSize(new BMap.Size(40,40)),L.setImageOffset(new BMap.Size(0,-10)),u.setIcon(L),u.setShadow(_),u.enableDragging(),g=new BMap.Polyline([c,P],m);var x=new BMap.Point((l.getBounds().getNorthEast().lng+c.lng)/2,c.lat);v=new r("circle",x,d,l,e),p=p.concat([u,g,v]);var D=null;e.limit&&(D=e.limit.area),y=new s({limit:D,type:"circle",point:P,overlay:l,overlays:p},e),t.addOverlay(u),t.addOverlay(g),t.addOverlay(v),e._opts.confirmVisible&&t.addOverlay(y),v.addEventListener("radiuschange",function(n){var i=n.radius;l.setRadius(i);var a=h(c,i,"east"),o=new BMap.Point(a.lng,c.lat),s=a.lng>c.lng?(l.getBounds().getNorthEast().lng+c.lng)/2:(l.getBounds().getSouthWest().lng+c.lng)/2,r=new BMap.Point(s,c.lat);u.setPosition(o),v.setInfo(r,i),e._opts.confirmVisible&&(y.setPosition(o,!0),y.updateWindow()),g.setPath([c,o]);var p=t.getViewport(l.getBounds());p.zoom-=1,t.setViewport(p)}),u.addEventListener("dragging",function(t){var n=new BMap.Point(t.point.lng,c.lat),i=t.point.lng>c.lng?(l.getBounds().getNorthEast().lng+c.lng)/2:(l.getBounds().getSouthWest().lng+c.lng)/2,a=t.point.lng>c.lng,o=new BMap.Point(i,c.lat);t.target.setPosition(n),v.setInfo(o,e._map.getDistance(c,t.point).toFixed(0)),e._opts.confirmVisible&&y.setPosition(n,a),g.setPath([c,n]),d=e._map.getDistance(c,t.point).toFixed(0),l.setRadius(e._map.getDistance(c,t.point))}),u.addEventListener("dragend",function(n){e._opts.confirmVisible&&y.updateWindow();var i=t.getViewport(l.getBounds());i.zoom-=1,t.setViewport(i)}),a.disableEdgeMove(),a.removeEventListener("mousemove",w),a.removeEventListener("mousemove",b),i.un(document,"mouseup",M)},b=function(n){i.preventDefault(n),i.stopBubble(n),"right"==e.controlButton&&1==n.button||null==c&&function(n){if("right"!=e.controlButton||1!=n.button&&0!=n.button){c=n.point;var o=new BMap.Marker(c);f.setImageSize(new BMap.Size(20,20)),o.setIcon(f),o.setShadow(_),o.enableDragging(),o.addEventListener("dragstart",E),o.addEventListener("dragging",B),o.addEventListener("dragend",O),t.addOverlay(o),p.push(o),l=new BMap.Circle(c,.01,e.circleOptions),t.addOverlay(l),a.enableEdgeMove(),a.addEventListener("mousemove",w),i.on(document,"mouseup",M)}}(n)},E=function(n){t.removeOverlay(u),t.removeOverlay(g),t.removeOverlay(v),e._opts.confirmVisible&&t.removeOverlay(y)},B=function(e){c=e.point,l.setCenter(e.point)},O=function(e){c=e.point,M(e)};a.addEventListener("mousedown",b),a.addEventListener("mousemove",function(n){i.preventDefault(n),i.stopBubble(n),t.removeOverlay(o),(o=new BMap.Label("按下确认中心点,拖拽确认半径",{position:n.point,offset:new BMap.Size(10,10)})).setStyle(e.labelOptions),t.addOverlay(o)})},a.prototype._bindPolylineOrPolygon=function(){var e=this,t=this._map,n=this._mask,a=[],r=null,l=null,p=null,c=!1;function d(){for(var e=arguments[0],t=0,n=0,i=0;i<e.length;i++)t<e[i].lng&&(t=e[i].lng,n=i);return e[n]}var h=function(i){if("right"!=e.controlButton||1!=i.button&&0!=i.button){var o=i.point;p&&(o=p),a.push(o),r=a.concat(a[a.length-1]),1==a.length?(e._drawingType==BMAP_DRAWING_POLYLINE?l=new BMap.Polyline(r,e.polylineOptions):e._drawingType==BMAP_DRAWING_POLYGON&&(l=new BMap.Polygon(r,e.polygonOptions)),t.addOverlay(l)):l.setPath(r),c||(c=!0,n.enableEdgeMove(),n.removeEventListener("mousemove",v),n.addEventListener("mousemove",u),n.addEventListener("dblclick",g))}},u=function(n){var i=n.point;if(e._enableSorption){var a=e.getSorptionMatch(i,e.overlays,e._sorptionDistance);if(a&&a.length>0)return p=a[0].point,void l.setPositionAt(r.length-1,a[0].point)}p=null,l.setPositionAt(r.length-1,n.point),t.removeOverlay(o),(o=new BMap.Label("单击绘制下一个点,双击完成绘制",{position:n.point,offset:new BMap.Size(10,10)})).setStyle(e.labelOptions),t.addOverlay(o)},g=function(p){i.stopBubble(p),c=!1,t.removeOverlay(o),n.disableEdgeMove(),n.removeEventListener("mousedown",h),n.removeEventListener("mousemove",u),n.removeEventListener("mousemove",v),n.removeEventListener("dblclick",g),"right"==e.controlButton?a.push(p.point):i.ie<=8||a.pop();try{if(e._enableGpc&&window.gpcas){for(var y=new gpcas.geometry.PolyDefault,m=0;m<a.length;m++)y.addPoint(new gpcas.Point(a[m].lng,a[m].lat));for(var f=0;f<e.overlays.length;f++){var _=e.overlays[f].getPath(),w=new gpcas.geometry.PolyDefault;for(m=0;m<_.length;m++)w.addPoint(new gpcas.Point(_[m].lng,_[m].lat));var M=y.difference(w).getPoints(),b=[];for(m=0;m<M.length;m++)b.push(new BMap.Point(M[m].x,M[m].y));y=new gpcas.geometry.PolyDefault;for(m=0;m<M.length;m++)y.addPoint(new gpcas.Point(M[m].x,M[m].y));a=b}}}catch(p){}l.setPath(a);var E=t.getViewport(a);E.zoom-=1,t.setViewport(E);new BMap.Marker(p.point);if(e._opts.confirmVisible){l.enableEditing();var B=null;e.limit&&(B=e.limit.area);var O=new s({limit:B,type:"polygon",point:d(a),overlay:l,overlays:[]},e);t.addOverlay(O),l.addEventListener("lineupdate",function(e){var t=d(e.currentTarget.getPath());O.setPosition(t,!0),O.updateWindow()})}else{var P=e._calculate(l,l.getPath());e._dispatchOverlayComplete(l,P)}a.length=0,r.length=0,e.close()},v=function(n){i.preventDefault(n),i.stopBubble(n),t.removeOverlay(o),(o=new BMap.Label("单击确认起点",{position:n.point,offset:new BMap.Size(10,10)})).setStyle(e.labelOptions),t.addOverlay(o)};n.addEventListener("mousemove",v),n.addEventListener("mousedown",h),n.addEventListener("dblclick",function(e){i.stopBubble(e)})},a.prototype._bindRectangle=function(){var e=this,t=this._map,a=this._mask,l=null,p=null,c=null;function d(e,t){var n=new BMap.Point(e.lng,e.lat),i=new BMap.Point(t.lng,e.lat),a=new BMap.Point(t.lng,t.lat),o=new BMap.Point(e.lng,t.lat);return[n,new BMap.Point((e.lng+t.lng)/2,e.lat),i,new BMap.Point(t.lng,(e.lat+t.lat)/2),a,new BMap.Point((e.lng+t.lng)/2,t.lat),o,new BMap.Point(e.lng,(e.lat+t.lat)/2)]}function u(e){var t,n,i;for(i in t=Array.isArray(e)?[]:{},e)n=e[i],t[i]="object"==typeof n?u(n):n;return t}var g=new BMap.Icon(n+"bullet.png",new BMap.Size(10,10)),v=new BMap.Icon("//huiyan.baidu.com/cms/images/DrawingManager/maker-shadow.png",new BMap.Size(20,20));g.setImageSize(new BMap.Size(10,10));var y=function(n){t.removeOverlay(o),l.setPath(e._getRectanglePoint(p,n.point));var i=d(p,n.point),a=e._map.getDistance(p,i[2]).toFixed(0),s=e._map.getDistance(p,i[6]).toFixed(0);(o=new BMap.Label("尺寸:"+a+"米 x "+s+"米<br>松开结束绘制",{position:n.point,offset:new BMap.Size(10,10)})).setStyle(e.labelOptions),t.addOverlay(o)},m=function(n){a.hide();var _=d(p,n.point||c),w=t.getViewport(_);if(w.zoom-=1,t.setViewport(w),t.removeOverlay(o),a.disableEdgeMove(),a.removeEventListener("mousemove",y),a.removeEventListener("mousemove",f),i.un(document,"mouseup",m),!e._opts.confirmVisible){var M=e._calculate(l,l.getPath());return e._dispatchOverlayComplete(l,M),void e.close()}for(var b=null,E=[],B=u(_),O=e._map.getDistance(p,_[2]).toFixed(0),P=e._map.getDistance(p,_[6]).toFixed(0),L=new r("rectangle",_[0],{width:O,height:P},l,e),x=0;x<_.length;x++){var D=new BMap.Marker(_[x]);D.point=_[x],D.enableDragging(),D.setIcon(g),D.setShadow(v),E.push(D),t.addOverlay(D),D.addEventListener("mousedown",function(e){b=e.target.point}),D.addEventListener("dragging",function(t){for(var n=t.point,i=0;i<B.length;i++)b.lng==B[i].lng&&(_[i].lng=n.lng),b.lat==B[i].lat&&(_[i].lat=n.lat);_=d(_[0],_[4]);for(var a=0;a<E.length;a++)E[a].setPosition(_[a]);O=e._map.getDistance(_[0],_[2]).toFixed(0),P=e._map.getDistance(_[0],_[6]).toFixed(0),L.setInfo(_[0],{width:O,height:P}),e._opts.confirmVisible&&A.setPosition(_[3],!0),l.setPath(_)}),D.addEventListener("dragend",function(n){B=u(_),e._opts.confirmVisible&&A.updateWindow();var i=t.getViewport(_);i.zoom-=1,t.setViewport(i)})}L.addEventListener("rectwhchange",function(n){var i=n.width,a=n.height,o=h(_[0],i,"east"),s=h(_[0],a,"south");_[4].lng=o.lng,_[4].lat=s.lat,_=d(_[0],_[4]);for(var r=0;r<E.length;r++)E[r].setPosition(_[r]);L.setInfo(_[0],{width:i,height:a}),e._opts.confirmVisible&&A.setPosition(_[3],!0),l.setPath(_),B=u(_),e._opts.confirmVisible&&A.updateWindow();var p=t.getViewport(_);p.zoom-=1,t.setViewport(p)});var T=[E,L],C=null;e.limit&&(C=e.limit.area);var I={limit:C,type:"rectangle",point:_[3],overlay:l,overlays:T};if(e._opts.confirmVisible){var A=new s(I,e);t.addOverlay(A),t.addOverlay(L)}else{for(var k=0;k<E.length;k++)t.removeOverlay(E[k]);M=e._calculate(l,l.getPath());e._dispatchOverlayComplete(l,M)}},f=function(n){i.preventDefault(n),i.stopBubble(n),c=n.point,t.removeOverlay(o),(o=new BMap.Label("按住确认起点,拖拽进行绘制",{position:n.point,offset:new BMap.Size(10,10)})).setStyle(e.labelOptions),t.addOverlay(o)};a.addEventListener("mousedown",function(n){if(i.stopBubble(n),i.preventDefault(n),"right"!=e.controlButton||1!=n.button&&0!=n.button){var o=p=n.point;l=new BMap.Polygon(e._getRectanglePoint(p,o),e.rectangleOptions),t.addOverlay(l),a.enableEdgeMove(),a.addEventListener("mousemove",y),i.on(document,"mouseup",m)}}),a.addEventListener("mousemove",f)},a.prototype._calculate=function(e,t){var n={data:0,label:null};if(this._enableCalculate&&BMapLib.GeoUtils){switch(e.toString()){case"[object Polyline]":n.data=BMapLib.GeoUtils.getPolylineDistance(e);break;case"[object Polygon]":n.data=BMapLib.GeoUtils.getPolygonArea(e);break;case"[object Circle]":var i=e.getRadius();n.data=Math.PI*i*i}!n.data||n.data<0?n.data=0:n.data=n.data.toFixed(2)}return n},a.prototype._addGeoUtilsLibrary=function(){if(!BMapLib.GeoUtils){var e=document.createElement("script");e.setAttribute("type","text/javascript"),e.setAttribute("src","//huiyan.baidu.com/github/BMap-JavaScript-library/src/GeoUtils/GeoUtils.min.js"),document.body.appendChild(e)}},a.prototype._addLabel=function(e,t){var n=new BMap.Label(t,{position:e});return this._map.addOverlay(n),n},a.prototype._getRectanglePoint=function(e,t){return[new BMap.Point(e.lng,e.lat),new BMap.Point(t.lng,e.lat),new BMap.Point(t.lng,t.lat),new BMap.Point(e.lng,t.lat)]},a.prototype._dispatchOverlayComplete=function(e,t){var n={overlay:e,drawingMode:this._drawingType};t&&(n.calculate=t.data||null,n.label=t.label||null),this.dispatchEvent(this._drawingType+"complete",e),this.dispatchEvent("overlaycomplete",n)},a.prototype.getSorptionMatch=function(e,t,n){n=n||20;for(var i=this._map,a=i.pointToPixel(e),o=[],s=0;s<t.length;s++){var r=t[s].getPath(),l=r[0],p=r[r.length-1];l.equals(p)||r.push(r[0]);for(var c=1;c<r.length;c++){var d=i.pointToPixel(r[c-1]),h=i.pointToPixel(r[c]),u=[a.x-d.x,a.y-d.y],g=[h.x-d.x,h.y-d.y],v=[h.x-a.x,h.y-a.y],y=u[0]*g[0]+u[1]*g[1],m=Math.sqrt(Math.pow(u[0],2)+Math.pow(u[1],2))*Math.sqrt(Math.pow(g[0],2)+Math.pow(g[1],2)),f=Math.acos(y/m),_=g[0]*v[0]+g[1]*v[1],w=Math.sqrt(Math.pow(g[0],2)+Math.pow(g[1],2))*Math.sqrt(Math.pow(v[0],2)+Math.pow(v[1],2)),M=Math.acos(_/w);if(f<Math.PI/2&&M<Math.PI/2){var b=Math.sqrt(Math.pow(u[0],2)+Math.pow(u[1],2)),E=Math.sqrt(Math.pow(g[0],2)+Math.pow(g[1],2)),B=Math.cos(f)*b/E,O=Math.sin(f)*b,P=[d.x+g[0]*B,d.y+g[1]*B];O<n&&o.push({point:i.pixelToPoint({x:P[0],y:P[1]}),length:O})}}}return o.sort(function(e,t){return e.length-t.length}),o.length>0?o:null},s.prototype=new BMap.Overlay,s.prototype.dispatchEvent=i.lang.Class.prototype.dispatchEvent,s.prototype.addEventListener=i.lang.Class.prototype.addEventListener,s.prototype.removeEventListener=i.lang.Class.prototype.removeEventListener,s.prototype.initialize=function(e){var t=this;this._map=e;var n=this.div=document.createElement("div");n.className="operateWindow";var i='<div><span id="confirmOperate"></span><span id="cancelOperate"></span><span id="warnOperate">面积不超过'+this.limit/1e4+"万平方米!</span></div>";return n.innerHTML=i,this._map.addEventListener("resize",function(e){t._adjustSize(e.size)}),this._map.getPanes().markerPane.appendChild(n),this.updateWindow(),this._bind(),n},s.prototype._bind=function(){var e=this,t=this._map,n=this.overlay,i=this.overlays;document.getElementById("confirmOperate").addEventListener("click",function(a){if(t.removeOverlay(e),"rectangle"==e.type)var o=e.DrawingManager._calculate(n,n.getPath());else if("circle"==e.type)o=e.DrawingManager._calculate(n,e.point);else if("polygon"==e.type){o=e.DrawingManager._calculate(n,n.getPath());e.DrawingManager.overlays.push(n),n.disableEditing()}e.DrawingManager._dispatchOverlayComplete(n,o);for(var s=0;s<i.length;s++)if(Array.isArray(i[s]))for(var r in i[s])t.removeOverlay(i[s][r]);else t.removeOverlay(i[s]);e.DrawingManager.close()}),document.getElementById("cancelOperate").addEventListener("click",function(a){t.removeOverlay(e);for(var o=0;o<i.length;o++)if(Array.isArray(i[o]))for(var s in i[o])t.removeOverlay(i[o][s]);else t.removeOverlay(i[o]);t.removeOverlay(n),e.DrawingManager._mask.show(),e.DrawingManager._setDrawingMode(e.type)})},s.prototype.updateWindow=function(){if(null!==this.domElement){var e,t=this.overlay,n=(this.overlays,this.limit);"rectangle"==this.type?e=this.DrawingManager._calculate(t,t.getPath()):"circle"==this.type?e=this.DrawingManager._calculate(t,this.point):"polygon"==this.type&&(e=this.DrawingManager._calculate(t,t.getPath()));var i=document.getElementById("confirmOperate"),a=document.getElementById("warnOperate");i&&a&&("[object Number]"===Object.prototype.toString.call(n)&&e.data>n?(i.style.display="none",a.style.display="block"):(i.style.display="block",a.style.display="none"))}},s.prototype.setPosition=function(e,t){this.point=e;var n=this._map.pointToOverlayPixel(this.point);t?(this.div.classList.remove("operateLeft"),this.div.style.left=n.x+15+"px"):(this.div.classList.add("operateLeft"),this.div.style.left=n.x-105+"px"),this.div.style.top=n.y-16+"px"},s.prototype.draw=function(){var e=this._map.pointToOverlayPixel(this.point);this.div.style.left=e.x+15+"px",this.div.style.top=e.y-16+"px"},r.prototype=new BMap.Overlay,r.prototype.dispatchEvent=i.lang.Class.prototype.dispatchEvent,r.prototype.addEventListener=i.lang.Class.prototype.addEventListener,r.prototype.removeEventListener=i.lang.Class.prototype.removeEventListener,r.prototype.initialize=function(e){var t=this;this._map=e;var n=this.div=document.createElement("div");if(n.className="screenshot","circle"==this.type)var i='<div class="circlShot"><span id="screenshotNum">'+this.number+'</span><input id="circleInput" type="text" /><span class="unit">米</span></div>';else if("rectangle"==this.type)i='<div class="rectWH"><div class="wh"><span id="rectWidth">'+this.number.width+'</span><input id="rectWidthInput" type="text" /></div><span class="multiple">x</span><div class="wh"><span id="rectHeight">'+this.number.height+'</span><input id="rectHeightInput" type="text" /></div><span class="unit">米</span></div>';return n.innerHTML=i,this._map.addEventListener("resize",function(e){t._adjustSize(e.size)}),this._map.getPanes().markerPane.appendChild(n),this._bind(),n},r.prototype._bind=function(){this.setNumber(this.number),"circle"==this.type?this.bindCircleEvent():this.bindRectEvent()},r.prototype.bindCircleEvent=function(){var e=this,t=document.getElementById("screenshotNum"),n=document.getElementById("circleInput");t.addEventListener("click",function(e){var i=t.innerText;t.style.display="none",n.value=i,n.style.display="inline-block",n.focus()}),n.addEventListener("click",function(e){n.focus()}),n.addEventListener("keydown",function(i){if(13===i.keyCode){var a=n.value;n.style.display="none",t.style.display="inline-block",t.innerText=a;var o={radius:a,overlay:e.overlay};e._dispatchRadiusChange(o)}}),n.addEventListener("blur",function(i){var a=n.value;n.style.display="none",t.style.display="inline-block",t.innerText=a;var o={radius:a,overlay:e.overlay};e._dispatchRadiusChange(o)})},r.prototype.bindRectEvent=function(){var e=this,t=document.getElementById("rectWidth"),n=document.getElementById("rectWidthInput"),i=document.getElementById("rectHeight"),a=document.getElementById("rectHeightInput");n.value=t.innerText,a.value=i.innerText,t.addEventListener("click",function(e){var i=t.innerText;t.style.display="none",n.value=i,n.style.display="inline-block",n.focus()}),i.addEventListener("click",function(e){var t=i.innerText;i.style.display="none",a.value=t,a.style.display="inline-block",a.focus()}),n.addEventListener("click",function(e){n.focus()}),a.addEventListener("click",function(e){a.focus()}),n.addEventListener("keydown",function(o){if(13===o.keyCode){var s=n.value,r=a.value;n.style.display="none",a.style.display="none",t.style.display="inline-block",i.style.display="inline-block",t.innerText=s,i.innerText=r;var l={width:s,height:r,overlay:e.overlay};e._dispatchRectWHChange(l)}}),a.addEventListener("keydown",function(o){if(13===o.keyCode){var s=n.value,r=a.value;n.style.display="none",a.style.display="none",t.style.display="inline-block",i.style.display="inline-block",t.innerText=s,i.innerText=r;var l={width:s,height:r,overlay:e.overlay};e._dispatchRectWHChange(l)}})},r.prototype.setInfo=function(e,t){this.setNumber(t),this.setPosition(e)},r.prototype.setNumber=function(e){"circle"==this.type?document.getElementById("screenshotNum").textContent=e:(document.getElementById("rectWidth").textContent=e.width,document.getElementById("rectHeight").textContent=e.height)},r.prototype.setPosition=function(e){this.point=e;var t=this._map,n=this.type,i=t.pointToOverlayPixel(this.point);"circle"==n?(this.div.style.left=i.x-30+"px",this.div.style.top=i.y-40+"px"):"rectangle"==n&&(this.div.style.left=i.x+"px",this.div.style.top=i.y-45+"px")},r.prototype.draw=function(){var e=this._map,t=this.type,n=e.pointToOverlayPixel(this.point);"circle"==t?(this.div.style.left=n.x-30+"px",this.div.style.top=n.y-40+"px"):"rectangle"==t&&(this.div.style.left=n.x+"px",this.div.style.top=n.y-45+"px")},r.prototype._dispatchRadiusChange=function(e){this.dispatchEvent("radiuschange",e)},r.prototype._dispatchRectWHChange=function(e){this.dispatchEvent("rectwhchange",e)},l.prototype=new BMap.Overlay,l.prototype.dispatchEvent=i.lang.Class.prototype.dispatchEvent,l.prototype.addEventListener=i.lang.Class.prototype.addEventListener,l.prototype.removeEventListener=i.lang.Class.prototype.removeEventListener,l.prototype.initialize=function(e){var t=this;this._map=e;var n=this.container=document.createElement("div"),i=this._map.getSize();return n.style.cssText="position:absolute;background:url(about:blank);cursor:crosshair;width:"+i.width+"px;height:"+i.height+"px",this._map.addEventListener("resize",function(e){t._adjustSize(e.size)}),this._map.getPanes().floatPane.appendChild(n),this._bind(),n},l.prototype.draw=function(){var e=this._map,t=e.pixelToPoint(new BMap.Pixel(0,0)),n=e.pointToOverlayPixel(t);this.container.style.left=n.x+"px",this.container.style.top=n.y+"px"},l.prototype.enableEdgeMove=function(){this._enableEdgeMove=!0},l.prototype.disableEdgeMove=function(){clearInterval(this._edgeMoveTimer),this._enableEdgeMove=!1},l.prototype._bind=function(){for(var e=this,t=(this._map,this.container),n=null,a=null,o=function(e){return{x:e.clientX,y:e.clientY}},s=function(t){var s=t.type;t=i.getEvent(t),point=e.getDrawPoint(t);var r=function(n){t.point=point,e.dispatchEvent(t)};"mousedown"==s&&(n=o(t));var l=o(t);"click"==s?Math.abs(l.x-n.x)<5&&Math.abs(l.y-n.y)<5&&(a&&Math.abs(l.x-a.x)<5&&Math.abs(l.y-a.y)<5?a=null:(r(),a=o(t))):r()},r=["click","mousedown","mousemove","mouseup","dblclick"],l=r.length;l--;)i.on(t,r[l],s);i.on(t,"mousemove",function(t){e._enableEdgeMove&&e.mousemoveAction(t)})},l.prototype.mousemoveAction=function(e){var t=this._map,n=this,i=t.pointToPixel(this.getDrawPoint(e)),a=function(e){var t=e.clientX,n=e.clientY;return e.changedTouches&&(t=e.changedTouches[0].clientX,n=e.changedTouches[0].clientY),new BMap.Pixel(t,n)}(e),o=a.x-i.x,s=a.y-i.y;i=new BMap.Pixel(a.x-o,a.y-s),this._draggingMovePixel=i;t.pixelToPoint(i);this._panByX=this._panByY=0,i.x<=20||i.x>=t.width-20||i.y<=50||i.y>=t.height-10?(i.x<=20?this._panByX=8:i.x>=t.width-20&&(this._panByX=-8),i.y<=50?this._panByY=8:i.y>=t.height-10&&(this._panByY=-8),this._edgeMoveTimer||(this._edgeMoveTimer=setInterval(function(){t.panBy(n._panByX,n._panByY,{noAnimation:!0})},30))):this._edgeMoveTimer&&(clearInterval(this._edgeMoveTimer),this._edgeMoveTimer=null)},l.prototype._adjustSize=function(e){this.container.style.width=e.width+"px",this.container.style.height=e.height+"px"},l.prototype.getDrawPoint=function(e){var t=this._map,n=i.getTarget(e),a=e.offsetX||e.layerX||0,o=e.offsetY||e.layerY||0;for(1!=n.nodeType&&(n=n.parentNode);n&&n!=t.getContainer();)0==n.clientWidth&&0==n.clientHeight&&n.offsetParent&&"TD"==n.offsetParent.nodeName||(a+=n.offsetLeft||0,o+=n.offsetTop||0),n=n.offsetParent;var s=new BMap.Pixel(a,o);return t.pixelToPoint(s)},p.prototype=new BMap.Control,p.prototype.initialize=function(e){var t=this.container=document.createElement("div");t.className="BMapLib_Drawing";var n=this.panel=document.createElement("div");n.className="BMapLib_Drawing_panel",this.drawingToolOptions&&!this.drawingToolOptions.hasCustomStyle&&this.drawingToolOptions.scale&&this._setScale(this.drawingToolOptions.scale),t.appendChild(n);var a=this._generalHtml();n.appendChild(a);var o=this.tip=document.createElement("div");return o.className="BMapLib_tip",o.innerHTML='<p class="BMapLib_tip_title"></p><p class="BMapLib_tip_text"></p>',!0===this.drawingToolOptions.enableTips&&n.appendChild(o),this._bind(n),this.drawingToolOptions.customContainer?i.g(this.drawingToolOptions.customContainer).appendChild(t):e.getContainer().appendChild(t),t},p.prototype._generalHtml=function(e){var t=this,n={hander:"拖动地图"};n[BMAP_DRAWING_MARKER]="画点",n[BMAP_DRAWING_CIRCLE]="圆形工具",n[BMAP_DRAWING_POLYLINE]="画折线",n[BMAP_DRAWING_POLYGON]="多边形工具",n[BMAP_DRAWING_RECTANGLE]="矩形工具";for(var i=function(e,i){var a=document.createElement("a");return a.className=e,a.href="javascript:void(0)",a.setAttribute("drawingType",i),a.setAttribute("onfocus","this.blur()"),a.addEventListener("mouseenter",function(e){var i=e.target.getAttribute("drawingType"),a=n[i];"hander"===i?(t.tip.children[0].innerText=a,t.tip.children[1].innerText="使用鼠标拖动地图"):(t.tip.className+=" "+i,t.tip.children[0].innerText=a,t.tip.children[1].innerText="使用"+a+"选出目标区域"),t.tip.style.display="block"}),a.addEventListener("mouseleave",function(e){for(var n=e.target.getAttribute("drawingType"),i=" "+t.tip.className.replace(/[\t\r\n]/g,"")+" ";i.indexOf(" "+n+" ")>=0;)i=i.replace(" "+n+" "," ");t.tip.className=i.replace(/^\s+|\s+$/g,""),t.tip.style.display="none"}),a},a=document.createDocumentFragment(),o=0,s=this.drawingModes.length;o<s;o++){var r="BMapLib_box BMapLib_"+this.drawingModes[o];o==s-1&&(r+=" BMapLib_last"),a.appendChild(i(r,this.drawingModes[o]))}return a},p.prototype._setScale=function(e){var t=-parseInt((390-390*e)/2,10),n=-parseInt((50-50*e)/2,10);this.container.style.cssText=["-moz-transform: scale("+e+");","-o-transform: scale("+e+");","-webkit-transform: scale("+e+");","transform: scale("+e+");","margin-left:"+t+"px;","margin-top:"+n+"px;","*margin-left:0px;","*margin-top:0px;","margin-left:0px\\0;","margin-top:0px\\0;","filter: progid:DXImageTransform.Microsoft.Matrix(","M11="+e+",","M12=0,","M21=0,","M22="+e+",","SizingMethod='auto expand');"].join("")},p.prototype._bind=function(e){var t=this;i.on(this.panel,"click",function(e){var n=i.getTarget(e).getAttribute("drawingType");t.setStyleByDrawingMode(n),t._bindEventByDraingMode(n)})},p.prototype.setStyleByDrawingMode=function(e){if(e)for(var t=this.panel.getElementsByTagName("a"),n=0,i=t.length;n<i;n++){var a=t[n];if(a.getAttribute("drawingType")==e){var o="BMapLib_box BMapLib_"+e+"_hover";n==i-1&&(o+=" BMapLib_last"),a.className=o}else a.className=a.className.replace(/_hover/,"")}},p.prototype._bindEventByDraingMode=function(e){var t=this.drawingManager;t._isOpen&&t.getDrawingMode()===e?(t.close(),t._map.enableDoubleClickZoom()):(t.setDrawingMode(e),t.open(),t._map.disableDoubleClickZoom())};var c=[];function d(e){for(var t=c.length;t--;)c[t]!=e&&c[t].close()}function h(e,t,n){var i,a,o,s=e.lng,r=e.lat,l=t/6378800,p=Math.PI/180*r,c=Math.PI/180*s;switch(n){case"North":case"north":case"N":case"n":i=0,a=e.lng;break;case"West":case"west":case"W":case"w":i=90,o=e.lat;break;case"South":case"south":case"S":case"s":i=180,a=e.lng;break;case"East":case"east":case"E":case"e":i=270,o=e.lat;break;default:i=~~n}var d=Math.PI/180*i,h=Math.asin(Math.sin(p)*Math.cos(l)+Math.cos(p)*Math.sin(l)*Math.cos(d)),u=(c-Math.atan2(Math.sin(d)*Math.sin(l)*Math.cos(p),Math.cos(l)-Math.sin(p)*Math.sin(h))+Math.PI)%(2*Math.PI)-Math.PI,g=new BMap.Point(a||u*(180/Math.PI),o||h*(180/Math.PI));return g.lng=parseFloat(g.lng.toFixed(6)),g.lat=parseFloat(g.lat.toFixed(6)),g}}();