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/

  • 相关阅读:
    Flesch Reading Ease(模拟)
    实验一:词法分析设计
    java—容器学习笔记
    [转载]马士兵Java视频教程 —— 学习顺序
    Java的安装过程
    编程之美初赛第一场
    RCC 2014 Warmup (Div. 2)
    ural 1017. Staircases(dp)
    ural 1012. K-based Numbers. Version 2(大数dp)
    ural 1009. K-based Numbers(简单dp)
  • 原文地址:https://www.cnblogs.com/changbiao/p/3796301.html
Copyright © 2011-2022 走看看