zoukankan      html  css  js  c++  java
  • iOS关于百度地图坐标偏移的处理

    iOS关于百度地图坐标偏移的处理

    定义一个宏来转换

    #define CBCoorConvert(coor) BMKCoorDictionaryDecode(BMKBaiduCoorForGcj(coor))

    使用

    - (id)initWithJson:(NSDictionary *)json
    {
        if (self = [super initWithJson:json]) {
            self.mileageNew = [json objectForKey:@"newMileage"];
            
            CLLocationCoordinate2D coor;
            coor.latitude = [self getLat];
            coor.longitude = [self getLon];
            self.baiduCootdinate = CBCoorConvert(coor);
        }
        return self;
    }

    baidu api介绍:

    /**
     *坐标转换函数,从原始GPS坐标,mapbar坐标转换成百度坐标
     *@param coorWgs84 待转换的原始GPS坐标,或者mapbar的坐标
     *@return 返回的NSDictionry中包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
     */
    UIKIT_EXTERN NSDictionary* BMKBaiduCoorForWgs84(CLLocationCoordinate2D coorWgs84);
    
    /**
     *坐标转换函数,从google坐标,51地图坐标,mapabc坐标转换为百度坐标(51地图坐标需要显出10000)
     *@param coorGcj 待转换的google坐标,51地图坐标,mapabc坐标
     *@return 返回的NSDictionry中包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
     */
    UIKIT_EXTERN NSDictionary* BMKBaiduCoorForGcj(CLLocationCoordinate2D coorGcj);
    
    /**
     *base64加密后的坐标字典解密函数
     *@param dictionary 带解密的NSDictionry,该NSDictionry中应包含“x”,“y”字段,各自对应经过base64加密之后的x,y坐标
     *@return 解密之后的坐标
     */
    UIKIT_EXTERN CLLocationCoordinate2D BMKCoorDictionaryDecode(NSDictionary* dictionary);

    百度定位SDK可以返回三种坐标系,

    分别是:

    bd09百度墨卡托坐标系),

    bd09ll百度经纬度坐标系),

    gcj02默认 国测局经纬度坐标系 )

    其中bd09ll能无偏差地显示在百度地图上。

    转换是连接百度的服务进行的,并不是本地进行转换的,

    Reference:http://qiansheep.blog.163.com/blog/static/3506872020139171153881/

  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/changbiao/p/3796301.html
Copyright © 2011-2022 走看看