function latLonToRadians(A){return A*Math.PI/180}VELatLongRectangle.prototype.IFContains=function(C){var B,A,G,F;var E,D;E=C.Latitude;D=C.Longitude;if(E>=0){B=this.TopLeftLatLong.Latitude>=E;A=this.BottomRightLatLong.Latitude<=E}else{B=this.TopLeftLatLong.Latitude>=E;A=this.BottomRightLatLong.Latitude<=E}if(D>=0){G=this.TopLeftLatLong.Longitude<=D;F=this.BottomRightLatLong.Longitude>=D}else{G=this.TopLeftLatLong.Longitude<=D;F=this.BottomRightLatLong.Longitude>=D}return B&&A&&G&&F};VELatLong.prototype.distanceTo=function(G,C){var K=new VELatLong(this.Latitude,this.Longitude);var I=new VELatLong(G.Latitude,G.Longitude);K.Latitude=latLonToRadians(K.Latitude);K.Longitude=latLonToRadians(K.Longitude);I.Latitude=latLonToRadians(I.Latitude);I.Longitude=latLonToRadians(I.Longitude);var B=6371;var E=I.Latitude-K.Latitude;var J=I.Longitude-K.Longitude;var H=Math.sin(E/2)*Math.sin(E/2)+Math.cos(K.Latitude)*Math.cos(I.Latitude)*Math.sin(J/2)*Math.sin(J/2);var F=2*Math.atan2(Math.sqrt(H),Math.sqrt(1-H));var A=B*F;var D=A*0.6214;return(C?D:A)};VEShape.prototype.addPoint=function(F){var A=this.edges();var E,C;var B=99999;for(var D=0;D<A.length;D=D+1){E=A[D].distanceTo(F);if(E<B){B=E;C=D}}var G=this.GetPoints();G.splice(C,0,F);this.SetPoints(G);return C};VEShape.prototype.edges=function(){var C=this.GetPoints();var B=[];for(var A=0;A<C.length-1;A=A+1){B[B.length]=new IFLine(C[A],C[A+1],this.IFmap)}return B};IFLine=function(C,B,A){this.point1=C;this.point2=B;var A=A;this.distanceTo=function(E){var D=this.nearPoint(E,A);return E.distanceTo(D)};this.nearPoint=function(F,I){var J=I.LatLongToPixel(this.point1);var H=I.LatLongToPixel(this.point2);var G=I.LatLongToPixel(F);var E=dotLineIntersection(J.x,J.y,H.x,H.y,G.x,G.y);var D=new VEPixel(E.x,E.y);return I.PixelToLatLong(D)}};dotLineIntersection=function(A,H,C,E,B,D){if(!(B-C)){return{x:C,y:H}}else{if(!(D-E)){return{x:A,y:E}}}var G,F=-1/((D-E)/(B-C));return{x:G=(B*(A*F-H+E)+C*(A*-F+H-D))/(F*(B-C)+E-D),y:F*G-F*A+H}};var EarthRadius=6378137;var MinLatitude=-85.05112878;var MaxLatitude=85.05112878;var MinLongitude=-180;var MaxLongitude=180;VEMap.prototype.IFClip=function(C,A,B){if(C>A){if(C<B){return C}else{return B}}else{return A}};VEMap.prototype.IFMapSize=function(A){return 256<<A};VEMap.prototype.IFGroundResolution=function(B,A){B=this.IFClip(B,MinLatitude,MaxLatitude);return Math.os(B*Math.PI/180)*2*Math.PI*EarthRadius/this.IFMapSize(A)};VEMap.prototype.IFMapScale=function(C,A,B){return this.IFGroundResolution(C,A)*B/0.0254};VEMap.prototype.IFLatLongToPixelXY=function(F,A,B){var F=this.IFClip(F,MinLatitude,MaxLatitude);var A=this.IFClip(A,MinLongitude,MaxLongitude);var H=(A+180)/360;var I=Math.sin(F*Math.PI/180);var G=0.5-Math.log((1+I)/(1-I))/(4*Math.PI);var E=this.IFMapSize(B);var D=parseInt(this.IFClip(H*E+0.5,0,E-1));var C=parseInt(this.IFClip(G*E+0.5,0,E-1));return{pixelx:D,pixely:C}};VEMap.prototype.IFPixelXYToTileXY=function(B,A){var D=B/256;var C=A/256;return{tilex:D,tiley:C}};VEMap.prototype.IFTileXYToQuadKey=function(E,D,B){quadKey="";var C;for(C=B;C>0;C=C-1){var F=0;var A=1<<(C-1);if((E&A)!=0){F=F+1}if((D&A)!=0){F=F+2}quadKey=quadKey+F}return quadKey};VEMap.prototype.IFLatLngToQuadKey=function(A,B){var D=this.IFLatLongToPixelXY(A.Latitude,A.Longitude,B);var C=this.IFPixelXYToTileXY(D.pixelx,D.pixely);return this.IFTileXYToQuadKey(C.tilex,C.tiley,B)};VEShape.prototype.IFLocalXYOnMap=function(A){return getLatLongViewPixel(this.GetPoints()[0])};
