国际共识:WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置;
中国:GCJ-02的坐标系统。在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,称之为火星坐标;
百度:BD-09的坐标系统,百度坐标是在国测局制定的GCJ-02,对地理位置进行首次加密的基础上,进行了BD-09二次加密措施,更加保护了个人隐私。
下面直接上代码,直接创建一个坐标转化类,用的时候将定位到的CLLocationCoordinate2D,直接通过所定义的类转化一下,再用的时候,地图定位偏差较大的问题即可解决。分别介绍下下列方法
1.判断是否在中国
+ (BOOL)isLocationOutOfChina:(CLLocationCoordinate2D)location;
2. 将WGS-84转为GCJ-02(火星坐标):
+ (CLLocationCoordinate2D)transformFromWGSToGCJ:(CLLocationCoordinate2D)wgsLoc;
3.将GCJ-02(火星坐标)转为百度坐标:
+(CLLocationCoordinate2D)transformFromGCJToBaidu:(CLLocationCoordinate2D)p;
4.将百度坐标转为GCJ-02(火星坐标):
+(CLLocationCoordinate2D)transformFromBaiduToGCJ:(CLLocationCoordinate2D)p;
5.将GCJ-02(火星坐标)转为WGS-84:
+(CLLocationCoordinate2D)transformFromGCJToWGS:(CLLocationCoordinate2D)p;
用的时候,直接把国际坐标转换成火星坐标,就可以直接显示定位信息了