-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathCurveLine.min.js
More file actions
1 lines (1 loc) · 1.97 KB
/
Copy pathCurveLine.min.js
File metadata and controls
1 lines (1 loc) · 1.97 KB
1
var BMapLib=window.BMapLib=BMapLib||{};!function(){var n,t,e=(n=document.getElementsByTagName("script"),(t=document.currentScript?document.currentScript.src:n[n.length-1].src).substring(0,t.lastIndexOf("/")+1))+"circle.png";function r(n){for(var t=[],e=0;e<n.length-1;e++){var r=i(n[e],n[e+1]);r&&r.length>0&&(t=t.concat(r))}return t}function i(n,t){if(!(n&&t&&n instanceof BMap.Point&&t instanceof BMap.Point))return null;var e=function(n){return 1-2*n+n*n},r=function(n){return 2*n-2*n*n},i=function(n){return n*n};curveCoordinates=[];var a,o,s,c,d,u,l=0,p=0;if(void 0!==t){var g=parseFloat(n.lat),h=parseFloat(t.lat),v=parseFloat(n.lng),M=parseFloat(t.lng);for(M>v&&parseFloat(M-v)>180&&v<0&&(v=parseFloat(360+v)),v>M&&parseFloat(v-M)>180&&M<0&&(M=parseFloat(360+M)),u=0,h==g?(a=0,o=v-M):M==v?(a=Math.PI/2,o=g-h):(a=Math.atan((h-g)/(M-v)),o=(h-g)/Math.sin(a)),0==u&&(u=a+Math.PI/5),d=(s=o/2)*Math.cos(u)+v,c=s*Math.sin(u)+g,l=0;l<31;l++)curveCoordinates.push(new BMap.Point(v*e(p)+d*r(p)+M*i(p),g*e(p)+c*r(p)+h*i(p))),p+=1/30;return curveCoordinates}"undefined"!=typeof curveCoordinates&&(curveCoordinates=[])}BMapLib.CurveLine=function(n,t){var i=r(n),a=new BMap.Polyline(i,t);return a.addEventListener("lineupdate",function(){this.isEditing&&this.enableEditing()}),a.cornerPoints=n,a.editMarkers=[],a.enableEditing=function(){var n=this;if(n.map){n.disableEditing();for(var t=0;t<n.cornerPoints.length;t++){var i=new BMap.Marker(n.cornerPoints[t],{icon:new BMap.Icon(e,new BMap.Size(16,16)),enableDragging:!0,raiseOnDrag:!0});i.addEventListener("dragend",function(){n.cornerPoints.length=0;for(var t=0;t<n.editMarkers.length;t++)n.cornerPoints.push(n.editMarkers[t].getPosition());var e=r(n.cornerPoints);n.setPath(e)}),i.index=t,n.editMarkers.push(i),n.map.addOverlay(i)}}n.isEditing=!0},a.disableEditing=function(){this.isEditing=!1;for(var n=0;n<this.editMarkers.length;n++)this.map.removeOverlay(this.editMarkers[n]),this.editMarkers[n]=null;this.editMarkers.length=0},a.getPath=function(){return i},a}}();