美文网首页iOS地图相关iOS学习笔记学无止境
iOS定位之百度地图定位的问题

iOS定位之百度地图定位的问题

作者: 辉乐轩 | 来源:发表于2016-11-29 19:29 被阅读180次

    今天遇到个问题,客户给了个 矢量地图,然后给了 左上角 & 右下角 的经纬度,让我实时定位,并将自己的位置显示在适量地图上。

    问题来了:

    我把做好的给客户测试,客户远在内蒙古,我在帝都。客户说咋没有自己的定位呢,小人在哪呢,看不见啊。

    尴尬了,在我这好好滴,去她那就不行了,郁闷。

    跟客户沟通下,客户的 矢量地图 都是现画的,AI画图,经纬度都是用 北京54采集数据,我也不懂,反正就是测出来的跟 谷歌 的吻合。


    那就可以解决了。

    客户用的是谷歌地图的经纬度,我用的是百度地图的经纬度,只要转化下就👌了

    先了解下

    WGS84: 即地图坐标,美国GPS使用的是WGS84的坐标系统。GPS系统获得的坐标系统,基本为标准的国际通用的WGS84坐标系统.

    GCJ-02: 即火星坐标,是由中国国家测绘局制订的地理信息系统的坐标系统。它是一种对经纬度数据的加密算法,即加入随机的偏差。国内出版的各种地图系统(包括电子形式),出于国家安全考虑,必须至少采用GCJ-02对地理位置进行首次加密.

    BD-09: 即百度坐标: 在GCJ02基础上,进行了BD-09二次加密措施,API支持从WGS/GCJ转换成百度坐标,不支持反转.

    /**

    *坐标转换函数,从原始GPS坐标,mapbar坐标,google坐标,51地图坐标,mapabc坐标转换为百度坐标(51地图坐标需要显出10000)

    *@param coordinate 待转换的坐标

    *@param type 待转换的坐标系类型,GPS为原始GPS坐标,COMMON为google坐标,51地图坐标,mapabc坐标

    *@return 返回的NSDictionry中包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标

    */

    UIKIT_EXTERN NSDictionary* BMKConvertBaiduCoorFrom(CLLocationCoordinate2D coordinate,BMK_COORD_TYPE type);

    /**typedef enum

    {

    BMK_COORDTYPE_GPS = 0, ///GPS设备采集的原始GPS坐标

    BMK_COORDTYPE_COMMON,  ///google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标

    } BMK_COORD_TYPE;

    *base64加密后的坐标字典解密函数

    *@param dictionary 带解密的NSDictionry,该NSDictionry中应包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标

    *@return 解密之后的坐标

    */

    UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);

    用这两个方法转一下,就OK了,完美解决!

    效果图

    小人就是当前位置,爽

    下面这段在其他地方看到的,应该有所帮助

    3.5.2  BD-09 转换为 WGS84.GCJ-02(百度没公开API,只能google了)

    在Github 找到这个转换算法https://github.com/TinyQ/TQLocationConverter

    *  将WGS-84转为GCJ-02(火星坐标)+(CLLocationCoordinate2D)transformFromWGSToGCJ:(CLLocationCoordinate2D)wgsLoc;

    *  将GCJ-02(火星坐标)转为百度坐标+ (CLLocationCoordinate2D)transformFromGCJToBaidu:(CLLocationCoordinate2D)p;

    *  将百度坐标转为GCJ-02(火星坐标)+ (CLLocationCoordinate2D)transformFromBaiduToGCJ:(CLLocationCoordinate2D)p; *  将GCJ-02(火星坐标)转为WGS-84+ (CLLocationCoordinate2D)transformFromGCJToWGS:(CLLocationCoordinate2D)p;

    相关文章

      网友评论

      • f2558aaa2231:你好。我问下。gcjo2这个坐标系是将wgs84进行加密后加上随机偏移的值。那我用百度坐标的话他会每次定位都不准吗?
        f2558aaa2231:@辉乐轩 我是在室内定位的。
        辉乐轩:@四六不懂 不会

      本文标题:iOS定位之百度地图定位的问题

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