edu-admin-old/public/js/DrawingManager.min.js

8 lines
36 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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