首页 > 代码库 > iOS关于百度地图坐标偏移的处理
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/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。