问题描述
/***gps纠偏算法,适用于google,高德体系的地图*@authorAdministrator*/publicclassGpsCorrect{finalstaticdoublepi=3.14159265358979324;finalstaticdoublea=6378245.0;finalstaticdoubleee=0.00669342162296594323;publicstaticvoidtransform(doublewgLat,doublewgLon,double[]latlng){if(outOfChina(wgLat,wgLon)){latlng[0]=wgLat;latlng[1]=wgLon;return;}doubledLat=transformLat(wgLon-105.0,wgLat-35.0);doubledLon=transformLon(wgLon-105.0,wgLat-35.0);doubleradLat=wgLat/180.0*pi;doublemagic=Math.sin(radLat);magic=1-ee*magic*magic;doublesqrtMagic=Math.sqrt(magic);dLat=(dLat*180.0)/((a*(1-ee))/(magic*sqrtMagic)*pi);dLon=(dLon*180.0)/(a/sqrtMagic*Math.cos(radLat)*pi);latlng[0]=wgLat+dLat;latlng[1]=wgLon+dLon;}privatestaticbooleanoutOfChina(doublelat,doublelon){if(lon<72.004||lon>137.8347)returntrue;if(lat<0.8293||lat>55.8271)returntrue;returnfalse;}privatestaticdoubletransformLat(doublex,doubley){doubleret=-100.0+2.0*x+3.0*y+0.2*y*y+0.1*x*y+0.2*Math.sqrt(Math.abs(x));ret+=(20.0*Math.sin(6.0*x*pi)+20.0*Math.sin(2.0*x*pi))*2.0/3.0;ret+=(20.0*Math.sin(y*pi)+40.0*Math.sin(y/3.0*pi))*2.0/3.0;ret+=(160.0*Math.sin(y/12.0*pi)+320*Math.sin(y*pi/30.0))*2.0/3.0;returnret;}privatestaticdoubletransformLon(doublex,doubley){doubleret=300.0+x+2.0*y+0.1*x*x+0.1*x*y+0.1*Math.sqrt(Math.abs(x));ret+=(20.0*Math.sin(6.0*x*pi)+20.0*Math.sin(2.0*x*pi))*2.0/3.0;ret+=(20.0*Math.sin(x*pi)+40.0*Math.sin(x/3.0*pi))*2.0/3.0;ret+=(150.0*Math.sin(x/12.0*pi)+300.0*Math.sin(x/30.0*pi))*2.0/3.0;returnret;}}