function LCC(A){if(!A||A==null){A={}}this.a=(A.semi_major||6378137)/(A.unit||0.3048006096012192);this.f_i=A.inverse_flattening||298.257222101;this.phi1=(A.standard_parallel_1||34.33333333333334)*(Math.PI/180);this.phi2=(A.standard_parallel_2||36.16666666666666)*(Math.PI/180);this.phiF=(A.latitude_of_origin||33.75)*(Math.PI/180);this.lamdaF=(A.central_meridian||-79)*(Math.PI/180);this.FE=A.false_easting||2000000.002616666;this.FN=A.false_northing||0;this.calc_m=function(C,D){var B=Math.sin(C);return Math.cos(C)/Math.sqrt(1-D*B*B)};this.calc_t=function(C,D){var B=D*Math.sin(C);return Math.tan(Math.PI/4-C/2)/Math.pow((1-B)/(1+B),D/2)};this.calc_r=function(B,D,C,E){return B*D*Math.pow(C,E)};this.calc_phi=function(B,E,D){var C=E*Math.sin(D);return Math.PI/2-2*Math.atan(B*Math.pow((1-C)/(1+C),E/2))};this.solve_phi=function(D,F,G){var C=0;var E=G;var B=this.calc_phi(D,F,E);while(Math.abs(B-E)>1e-9&&C<10){C++;E=B;B=this.calc_phi(D,F,E)}return B};this.f=1/this.f_i;this.es=2*this.f-this.f*this.f;this.e=Math.sqrt(this.es);this.m1=this.calc_m(this.phi1,this.es);this.m2=this.calc_m(this.phi2,this.es);this.tF=this.calc_t(this.phiF,this.e);this.t1=this.calc_t(this.phi1,this.e);this.t2=this.calc_t(this.phi2,this.e);this.n=Math.log(this.m1/this.m2)/Math.log(this.t1/this.t2);this.F=this.m1/(this.n*Math.pow(this.t1,this.n));this.rF=this.calc_r(this.a,this.F,this.tF,this.n)}LCC.prototype.circum=function(){return Math.PI*2*this.a};LCC.prototype.forward=function(I){var F=I[1]*(Math.PI/180);var A=I[0]*(Math.PI/180);var C=this.calc_t(F,this.e);var D=this.calc_r(this.a,this.F,C,this.n);var B=this.n*(A-this.lamdaF);var G=this.FE+D*Math.sin(B);var H=this.FN+this.rF-D*Math.cos(B);return[G,H]};LCC.prototype.inverse=function(H){var G=H[0];var I=H[1];var C=Math.atan((G-this.FE)/(this.rF-(I-this.FN)));var B=(this.n>0?1:-1)*Math.sqrt((G-this.FE)*(G-this.FE)+(this.rF-(I-this.FN))*(this.rF-(I-this.FN)));var D=Math.pow((B/(this.a*this.F)),1/this.n);var F=this.solve_phi(D,this.e,0);var A=C/this.n+this.lamdaF;return[A*(180/Math.PI),F*(180/Math.PI)]};function GMapCacheProjection(A){if(!A||A==null){A={}}this.zoomOffset=A.zoomOffset||10;this.originX=A.originX||0;this.originY=A.originY||2000000;this.projection=A.projection||new LCC();this.resolutions=A.resolutions||[434.027777777778,217.013888888889,108.506944444444,55.5555555555556,27.7777777777778,13.8888888888889,6.94444444444444,3.47222222222222,1.73611111111111,1,0.5];this.bounds=A.bounds}GMapCacheProjection.prototype=new GProjection();GMapCacheProjection.prototype.fromLatLngToPixel=function(F,B){if(F==null){return null}var D=this.projection.forward([F.lng(),F.lat()]);var C=B-this.zoomOffset;var A=Math.round((D[0]-this.originX)/this.resolutions[C]);var E=Math.round((this.originY-D[1])/this.resolutions[C]);return new GPoint(A,E)};GMapCacheProjection.prototype.fromPixelToLatLng=function(B,C,E){if(B==null){return null}var D=C-this.zoomOffset;var A=B.x*this.resolutions[D]+this.originX;var G=this.originY-B.y*this.resolutions[D];var F=this.projection.inverse([A,G]);return new GLatLng(F[1],F[0])};GMapCacheProjection.prototype.tileCheckRange=function(C,B,H){if(this.bounds==null){return true}var E=B-this.zoomOffset;var A=C.x*H*this.resolutions[E]+this.originX;var G=this.originY-(C.y+1)*H*this.resolutions[E];var F=(C.x+1)*H*this.resolutions[E]+this.originX;var D=this.originY-C.y*H*this.resolutions[E];return new GBounds(A,G,F,D).intersects(this.bounds)};GMapCacheProjection.prototype.getWrapWidth=function(A){var B=A-this.zoomOffset;return this.projection.circum()/this.resolutions[B]};GMapCacheProjection.prototype.fromLatLngToCoords=function(B){var A=this.projection.forward([B.lng(),B.lat()]);return new GPoint(A[0],A[1])};GMapCacheProjection.prototype.fromCoordsToLatLng=function(A){var B=this.projection.inverse([A.x,A.y]);return new GLatLng(B[1],B[0])};function GMapCacheAdapter(C,E,B){if(!B||B==null){B={}}var D=function(J,H,G){var I=J.indexOf(H);if(I==-1||H==""){I=0}var K=J.indexOf(G,I+H.length);if(K==-1||G==""){K=J.length-1}return J.substring(I+H.length,K)};var F=function(H,G){return H.getElementsByTagName(G)[0].firstChild.nodeValue};var A=function(I){var K={};var H=D(I,'PROJECTION["','"]');var G=D(I,"SPHEROID[","]").split(",");K.unit=parseFloat(D(D(I,"PROJECTION",""),"UNIT[","]").split(",")[1]);K.semi_major=parseFloat(G[1]);K.inverse_flattening=parseFloat(G[2]);K.standard_parallel_1=parseFloat(D(I,'"Standard_Parallel_1",',"]"));K.standard_parallel_2=parseFloat(D(I,'"Standard_Parallel_2",',"]"));K.latitude_of_origin=parseFloat(D(I,'"Latitude_Of_Origin",',"]"));K.central_meridian=parseFloat(D(I,'"Central_Meridian",',"]"));K.false_easting=parseFloat(D(I,'"False_Easting",',"]"));K.false_northing=parseFloat(D(I,'"False_Northing",',"]"));switch(H){case"Lambert_Conformal_Conic":var J=new LCC(K);return J;default:throw H+" not implemented yet"}};GDownloadUrl(C,function(H,S){if(S==200){var P=GXml.parse(H);var O=F(P,"WKT");var G=A(O);var J={};J.projection=G;J.originX=parseFloat(F(P,"X"));J.originY=parseFloat(F(P,"Y"));var Q=[];var I=P.getElementsByTagName("LODInfo");for(var L=0;L