#import"CommonMapWGS.h"
@implementationCommonMapWGS
//china GPS correct
//World Geodetic System ==> Mars Geodetic System
//translate from csharp:https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936
constdoublea =6378245.0;
constdoubleee =0.00669342162296594323;
+(CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)wgCoord{
if([selfoutOfChina:wgCoord.latitudelng:wgCoord.longitude]) {
returnwgCoord;
}
doublewgLon = wgCoord.longitude;
doublewgLat =wgCoord.latitude;
doubledLat = [selftransformLat: wgLon -105.0y: wgLat -35.0];
doubledLon = [selftransformLon: wgLon -105.0y: wgLat -35.0];
doubleradLat = wgLat /180.0*M_PI;
doublemagic =sin(radLat);
magic =1-ee* magic * magic;
doublesqrtMagic =sqrt(magic);
dLat = (dLat *180.0) / ((a* (1-ee)) / (magic * sqrtMagic) *M_PI);
dLon = (dLon *180.0) / (a/ sqrtMagic *cos(radLat) *M_PI);
doublemgLat = wgLat + dLat;
doublemgLon = wgLon + dLon;
returnCLLocationCoordinate2DMake(mgLat, mgLon);
}
+(BOOL)outOfChina:(double)latlng:(double)lng {
if(lng <72.004|| lng >137.8347){
returnYES;
}
if(lat <0.8293|| lat >55.8271){
returnYES;
}
returnNO;
};
+(double)transformLat:(double)x y:(double)y{
doubleret = -100.0+2.0* x +3.0* y +0.2* y * y +0.1* x * y +0.2*sqrt(fabs(x));
ret += (20.0*sin(6.0* x *M_PI) +20.0*sin(2.0* x *M_PI)) *2.0/3.0;
ret += (20.0*sin(y *M_PI) +40.0*sin(y /3.0*M_PI)) *2.0/3.0;
ret += (160.0*sin(y /12.0*M_PI) +320*sin(y *M_PI/30.0)) *2.0/3.0;
returnret;
}
+(double)transformLon:(double)xy:(double)y{
doubleret =300.0+ x +2.0* y +0.1* x * x +0.1* x * y +0.1*sqrt(fabs(x));
ret += (20.0*sin(6.0* x *M_PI) +20.0*sin(2.0* x *M_PI)) *2.0/3.0;
ret += (20.0*sin(x *M_PI) +40.0*sin(x /3.0*M_PI)) *2.0/3.0;
ret += (150.0*sin(x /12.0*M_PI) +300.0*sin(x /30.0*M_PI)) *2.0/3.0;
returnret;
}
@end