美文网首页
iOS地图定位偏差问题解决(不同坐标系转化)

iOS地图定位偏差问题解决(不同坐标系转化)

作者: CoderMrGuo | 来源:发表于2017-05-31 15:08 被阅读41次

    国际共识: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;

    用的时候,直接把国际坐标转换成火星坐标,就可以直接显示定位信息了

    具体代码见demo  

    相关文章

      网友评论

          本文标题:iOS地图定位偏差问题解决(不同坐标系转化)

          本文链接:https://www.haomeiwen.com/subject/hvcjfxtx.html