iOS关于百度地图坐标转换问题

前言:第一篇博文算是一个开场,后面博文会偏向技术方面,也会包括心路历程。接下来就是我个人的第一篇技术文章,也是从前人经验中总结

最近,在开发项目中,经常遇到百度地图坐标转换问题。目前关于坐标系统分为以下几种:地球坐标(WGS84编码)、火星坐标(GCJ-02编码)、百度坐标(BD-09)。在获取经纬度后然后绘制在地图上,由于每个地图所使用坐标系统不同,就需要已转换坐标的方式,格式化成符合当前地图的坐标编码。下面解释一下已上的坐标系统的含义。

地球坐标 (WGS84)

  • 国际标准,GPS标准从 GPS 设备中取出的原始数据是就是这个
  • 国际地图提供商一般使用的也是这个

火星坐标 (GCJ-02)

  • 中国标准,行货 GPS 设备取出的最终数据是这个
  • 国家龟腚: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

百度坐标 (BD-09) -(这个是百度地图独有的编码方式,它对原有的经纬度进行了二次加密)

  • 百度标准,百度 SDK,地图,Geocoding 用的都是这个。

我对百度地图转火星坐标以及火星坐标、地球坐标转百度地图坐标进行资料总结,也在网上找了资料,自己也实现了,下面我就列举出来

这是我在项目中做的操作

 //火星坐标转百度坐标

        CLLocationCoordinate2D test = CLLocationCoordinate2DMake([info.latitudeString floatValue], [info.longitudeStringfloatValue]);//将获取的经纬度转为CLLocationCoordinate2D

        坐标转换

       

        NSDictionary* testdic = BMKConvertBaiduCoorFrom(test,BMK_COORDTYPE_COMMON);//调用百度提供的API BMKConvertBaiduCoorFrom()函数,转换坐标

        CLLocationCoordinate2D lo = BMKCoorDictionaryDecode(testdic);//对转换后获得的经过base64加密之后的xy坐标字典进行解密


        CLLocation *cll = [[[CLLocation alloc]initWithLatitude:lo.latitude longitude:lo.longitude] locationMarsFromEarth];




locationMarsFromEarth方法是对CLLocation扩展的一个类由于不能上传文件,我把代码粘贴在下方

 CLLocationManager 取出来的经纬度放到 mapView 上显示,是错误的!

  CLLocationManager 取出来的经纬度去 Google Maps API 做逆地址解析,当然是错的!

 从 MKMapView 取出来的经纬度去 Google Maps API 做逆地址解析终于对了。去百度地图API做逆地址解析,依旧是错的!

 从上面两处取的经纬度放到百度地图上显示都是错的!错的!的!

 

 分为 地球坐标,火星坐标(iOS mapView 高德 , 国内google ,搜搜、阿里云 都是火星坐标),百度坐标(百度地图数据主要都是四维图新提供的)

 

 火星坐标: MKMapView

 地球坐标: CLLocationManager

 

 当用到CLLocationManager 得到的数据转化为火星坐标, MKMapView不用处理

 

 

 API                坐标系

 百度地图API         百度坐标

 腾讯搜搜地图API      火星坐标

 搜狐搜狗地图API      搜狗坐标

 阿里云地图API       火星坐标

 图吧MapBar地图API   图吧坐标

 高德MapABC地图API   火星坐标

 灵图51ditu地图API   火星坐标

 

 */


#import


@interface CLLocation (YCLocation)


//从地图坐标转化到火星坐标

- (CLLocation*)locationMarsFromEarth;


//从火星坐标转化到百度坐标

- (CLLocation*)locationBaiduFromMars;


//从百度坐标到火星坐标

- (CLLocation*)locationMarsFromBaidu;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值