热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

校正IOS的gps坐标方法

用iosMapKit做过定位服务的人应该都知道用CLLocationManager获取的经纬度坐标在google地图上显示时与实际位置相差几百米,具体原因可查看我转载的一篇文章《WGS
用ios MapKit做过定位服务的人应该都知道用CLLocationManager 获取的经纬度坐标在google地图上显示时与实际位置相差几百米,具体原因可查看我转载的一篇文章《WGS84转火星坐标(ios篇)》。
        在我转载的那篇文章里有讲到两个方法,第二个是要用苹果私有API的而且也没有使用说明所以不推荐使用,而第一个方法是要调用高德地图的API的,方法应该是对的,不过那个sdk已经过时了,我试了发现返回经纬度都是0。文章中提供申请key的链接还是对的,不过那个链接里的sdk应该有问题,我在另外一个地方找到了最新的sdk。下载地址是: http://api.amap.com/Ios/download

下面贴下代码片段
1.下面这段代码就是初始化查询选项,高德API里可以查询公交路线等几个选项,我们要的是查偏移量,所以用的是MARGCSearchOption.

//用高德地图api校正获取的gps 数据
        MARGCSearchOption* searchOption = [[[MARGCSearchOption alloc]init]autorelease];
        searchOption.cOnfig= @"RGC"; //这个是默认的,函数声明的头文件有注释
        searchOption.authKey = MAPABC_KEY; //这个就是你申请的key
        searchOption.coors = [NSString stringWithFormat:@"%f,%f;",location.coordinate.longitude, location.coordinate.latitude];//这个可以同时查几组经纬度值,中间用分号隔开,参数location 是用 CLLocationManager获取的经纬度值
        [search gpsOffsetSearchWithOption:searchOption]; //传入searchoption开始查找校正后的经纬度


2.程序执行完  gpsOffsetSearchWithOption:searchOption方法后会调用一个MAsearchDelegate的代理方法,并且把调用结果返回来,所以你可以在这个代理方法里执行你的处理逻辑
.-(void) gpsOffsetSearch:(MARGCSearchOption *)gpsOffSearchOption Result:(MARGCSearchResult *)result
{
    MARGCItem* rgcInfo = [result.rgcItemArray objectAtIndex:0];  //返回的结果result是一个array来的,因为可以同时查找很多组经纬度值,不过我上面代码我只写了一组,所以只取第一个object就行了     
    currentLocation.lOngitude= [rgcInfo.x floatValue];        //取出经度值
    currentLocation.latitude = [rgcInfo.y floatValue];   //取出纬度值
 }

推荐阅读
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
author-avatar
Ymgif影像--阿雅XX_506
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有