iOS 火星坐标相关整理及解决方案汇总
来源:互联网 发布:淘宝店铺怎么 编辑:程序博客网 时间:2024/05/23 22:25
这几天在处理定位相关的代码,彻彻底底的被火星坐标恶心到了。
恶心列表
- 从 CLLocationManager 取出来的经纬度放到 mapView 上显示,是错的!
- 从 CLLocationManager 取出来的经纬度去 Google Maps API 做逆地址解析,当然是错的!
- 从 MKMapView 取出来的经纬度去 Google Maps API 做
逆地址解析
终于对了。去百度地图API做逆地址解析
,依旧是错的! - 从上面两处取的经纬度放到百度地图上显示都是错的!错的!的!
当时我还不知道火星坐标、XX坐标,大骂苹果SB(我错了)……
如果你碰到上述情况,接着往下看。
名词解释:
地球坐标 (WGS84)
- 国际标准,GPS标准从 GPS 设备中取出的原始数据是就是这个
- 国际地图提供商一般使用的也是这个
火星坐标 (GCJ-02)
- 中国标准,行货 GPS 设备取出的最终数据是这个
- 国家龟腚:
国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。
百度坐标 (BD-09)
- 百度标准,百度 SDK,地图,Geocoding 用的都是这个。
开发时所面临的现状
获取经纬度(GPS)
- 火星坐标
- MKMapView
- 地球坐标
- CLLocationManager
显示经纬度(地图)
- 火星坐标
- iOS 地图
- Gogole地图
- 搜搜、阿里云、高德地图
- 地球坐标
- Google 卫星地图(国外地图应该都是……)
- 百度坐标
- 百度地图
推荐的解决方案:
- 既然是在国内,存储一律用火星坐标,这样在使用国内地图显示时最方便(用百度地图显示时可以一次转换取得)
- CLLocationManager 拿到的 CLLocation 转为火星坐标,MKMapView 不用处理
- 使用地图 API 进行 地址解析/逆地址解析(Geocoding) 时注意相应使用相应地图商的坐标系
- 部分地图商支持多个坐标系输入,如高德支持地球、火星坐标(这个一直有变动,具体只能参考厂商最新文档了)
附上相应的转换算法
iOS 平台的转换算法的已经封装了一个 Category,在这里
地图坐标 to 火星坐标
- 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法
(推荐!) - 地图 API:
百度的 高德的
火星坐标 to 地图坐标
- 数据库查表转换
中国区 GPS坐标 修正(适用于google地图) - iOS 私有 API (已不可用)
火星坐标 vs 百度坐标
- 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
总结
- 火星坐标是天朝的新发明,至于火星坐标能补呢功能保证国家安全,我对此深深怀疑:至少用穷举法精度达到10米内是很容易的
- GPS厂商和地图厂商都需要加偏、纠偏算法,买算法是要付钱的
, 所以你懂的 - 火星坐标已经挺有天朝特色了:全民都处以
虚幻坐标系
之下,而百度又极尽展现了天朝厂商特色,为了垄断不折手段。我朝威武! - iOS SDK 的做法还是比较合理的,毕竟他是一个国际化的平台。CLLocationManager 提供地球坐标,这样显示国外地图商的地图服务没问题,碰到火星地图,转一下就好,逆之则没那么容易。而 MKMapView 则与 iOS 地图展示相关,国内地图必须使用火星坐标
- 本人只是想用户使用 app 时能简简单单定位准确,而不是飞檐走壁狐死首丘。本文只做技术讨论,不敢侵犯任何个人、团体、政党、国家、星球权利,任何XXX对此文不满,请留言,我立刻删之
links
0 0
- iOS 火星坐标相关整理及解决方案汇总
- iOS 火星坐标相关整理及解决方案汇总
- iOS 火星坐标相关整理及解决方案汇总
- iOS 火星坐标相关整理及解决方案汇总
- iOS 火星坐标相关整理及解决方案汇总
- iOS 火星坐标相关整理及解决方案汇总
- iOS 火星坐标相关整理及解决方案汇总(转)
- iOS 定位坐标不准确的相关整理及解决方案汇总
- IOS火星坐标转换
- 基于iOS上MDM技术相关资料整理及汇总
- 基于IOS上MDM技术相关资料整理及汇总
- 基于IOS上MDM技术相关资料整理及汇总
- 基于iOS上MDM技术相关资料整理及汇总
- iOS 地球坐标·火星坐标说明
- Ios设定地图不规则范围及火星坐标转百度坐标
- iOS地球坐标,火星坐标,百度坐标互转
- iOS地球坐标,火星坐标,百度坐标互转
- iOS地球坐标,火星坐标,百度坐标互转
- 防SQL注入方法
- 具备调试此应用程序的权限,此项目的URL位于Internet
- 技術指標改良
- MSSQL Sever 性能,磁盘等监控建立(二) 服务器侧内存使用量,CPU压力查询
- 什么是MD5,什么是SHA-1
- iOS 火星坐标相关整理及解决方案汇总
- MTD原始设备与FLASH硬件驱动的对话
- 从 .net 1.1 升级到 2.0过程中遇到的问题及解决方法
- 配置OpenCV产生flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe问题
- 指针练习,查找学生成绩并输出平均成绩和排名信息 每日一练(四)
- ffmpeg 源代码简单分析 : av_read_frame()
- 64位linux安装xampp(xampp只支持32位的linux版本) XAMPP is currently only availably as 32 bit application. Pleas
- spring security权限管理手册
- MPMoviePlayerViewController和MPMoviePlayerController的使用