因需求需要将高德定位集成进项目后,调用单次定位的方法,但发现获取定位方法回调数据很慢很慢 。。。

/***  @brief 单次定位。如果当前正在连续定位,调用此方法将会失败,返回NO。\n该方法将会根据设定的 desiredAccuracy 去获取定位信息。如果获取的定位信息精确度低于 desiredAccuracy ,将会持续的等待定位信息,直到超时后通过completionBlock返回精度最高的定位信息。\n可以通过 stopUpdatingLocation 方法去取消正在进行的单次定位请求。*  @param withReGeocode 是否带有逆地理信息(获取逆地理信息需要联网)*  @param completionBlock 单次定位完成后的Block*  @return 是否成功添加单次定位Request*/
- (BOOL)requestLocationWithReGeocode:(BOOL)withReGeocode completionBlock:(AMapLocatingCompletionBlock)completionBlock;

期间尝试过一些方法后,最终发现高德它是真的慢,但是也要解决问题呀,通过一通折腾后发现了一些路数;

解决办法

在初始化的时候有一个设置定位精准度的属性(即:setDesiredAccuracy),经过几经尝试,发现如下规律;

extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation API_AVAILABLE(ios(4.0), macos(10.7));
extern const CLLocationAccuracy kCLLocationAccuracyBest;
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;

设置为 Best 的时候定位大概耗时 8 秒;

设置为 NearestTenMeters 的时候定位大概耗时 5 秒;

设置为 HundredMeters 的时候定位大概耗时 2 秒;

设置为 ThreeKilometers 的时候定位大概秒定位到;

那么通过如上规律得知,精度约广耗时也就随之约短,那么也不能一味的为了减少耗时而过于降低定位的精准度;

最终依次将几个版本的精准度分别打包后安装在真机上尝试,发现前三项(即:Best、NearestTenMeters、HundredMeters)所获取到的定位数据信息一致,基本无偏差,故综合考量选择了耗时较短的 HundredMeters;

/**高德定位初始化*/
- (void)settingGaoDeConfig {[AMapServices sharedServices].apiKey = APPKEY_GaoDe;locationManagerGaoDe = [[AMapLocationManager alloc] init];
//    [locationManagerGaoDe setDesiredAccuracy:kCLLocationAccuracyBest];// 8 5 2
//    [locationManagerGaoDe setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];[locationManagerGaoDe setDesiredAccuracy:kCLLocationAccuracyHundredMeters];[locationManagerGaoDe setPausesLocationUpdatesAutomatically:NO];[locationManagerGaoDe setAllowsBackgroundLocationUpdates:YES];[locationManagerGaoDe setReGeocodeTimeout:5.f];[locationManagerGaoDe setLocationTimeout:5.f];[locationManagerGaoDe setDelegate:self];
}/**获取定位数据@param sn      交互协议@param webView 控件*/
- (void)getCurrentPositionBySnWith:(NSString *)sn AndWebView:(WKWebView *)webView  {[locationManagerGaoDe requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {NSLog(@"************ GaoDe 定位数据 ************");NSLog(@"%@", location);NSLog(@"纬度 %f", location.coordinate.latitude);NSLog(@"精度 %f", location.coordinate.longitude);NSLog(@"%@", regeocode);NSLog(@"%@", error);NSMutableDictionary *dict = [NSMutableDictionary dictionary];NSUInteger code = 0;if (error) {code = -1;[dict setObject:[NSNumber numberWithInteger:-1] forKey:@"code"];} else {[dict setValue:regeocode.formattedAddress forKey:@"address"];[dict setValue:regeocode.country forKey:@"country"];[dict setValue:regeocode.adcode forKey:@"adCode"];[dict setObject:[NSNumber numberWithFloat:location.coordinate.longitude] forKey:@"longitude"];[dict setValue:regeocode.city forKey:@"city"];[dict setValue:regeocode.district forKey:@"district"];[dict setObject:[NSNumber numberWithFloat:location.coordinate.latitude] forKey:@"latitude"];[dict setValue:regeocode.province forKey:@"province"];[dict setValue:regeocode.citycode forKey:@"cityCode"];[dict setObject:[NSNumber numberWithInteger:code] forKey:@"code"];}NSLog(@"************ GaoDe 定位数据回调 ************\n%@", dict);// Callback[WKWebView appCallWebWithServiceResultToJsonSn:sn AndDataSourceObject:dict WithWKView:webView];}];
}

以上便是此次分享的内容,希望对大家有所帮助!

高德定位慢 - iOS相关推荐

  1. Android定位开发之百度定位、高德定位、腾讯定位,三足鼎立一起为我所用!

    这几天的项目不是非常紧.于是想为未来可能要做的项目做一些技术储备. 下一个项目非常有可能是定位开发,须要用到手机定位功能,于是查了查如今比較流行的第三方定位,最火的基本上就是百度定位>高德定位& ...

  2. 微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题

    微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非https网站不提供支持问题 参考文章: (1)微信H5页面嵌入百度地图---解决手机的webKit定位,ios系统对非http ...

  3. HTML网页获取当前定位经纬度/地理位置定位/百度定位/高德定位

    需求描述 在HTML页面获取当前定位经纬度 代码 优先使用地理位置定位,定位失败时取百度定位,否则使用高德IP定位: <!-- 引入百度地图API(需申请百度地图开发者账号,创建秘钥使用) -- ...

  4. 高德定位SDK踩坑-高精度模式下获取不到GPS定位(无网络环境)

    高德定位SDK踩坑-高精度模式下获取不到GPS定位(无网络环境) 关键字:定位模式 高精度模式 GPS定位 无网络 一句话描述问题:高精度模式在断网环境下不可靠.有几率重复报错或使用缓存定位,不使用G ...

  5. android 高德地图定位圈,android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)...

    Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 现在通过Gradle集成SDK(也可以使用jar包) ...

  6. Android开发集成高德定位SDK实现定位功能。

    第一步:添加高德定位SDK依赖,导入框架有两种方式,第一种是可以到高德开放平台高德开放平台 | 高德地图API下载相关的jar包,然后将jar包放在项目的libs文件下,然后点击以依赖库的形式添加到项 ...

  7. 蓝牙扫描必要条件及高德定位授权

    真的很坑,蓝牙需要定位 说明:以下信息是方案制定的依据. 蓝牙扫描需要条件: a. 打开系统蓝牙开关.(必须) b. 允许定位权限.(Android6.0及以上) c. 打开定位开关.(少数手机) 定 ...

  8. 使用高德定位SDK实时定位

    一.目的 使用高德地图定位SDK实现实时定位并显示在UI界面上 二.SDK下载并获取Key 下载地址http://lbs.amap.com/api/android-location-sdk/downl ...

  9. uniapp 定位 android ios

    uniapp 定位 android ios <view class="cen-style"><view class="cens-title"& ...

最新文章

  1. 我国计算机通信技术现状及未来的发展趋势,我国计算机通信技术现状及未来的发展趋势...
  2. np.insert()
  3. 11g java 驱动_Oracle 11g Java驱动包ojdbc6.jar安装到maven库,并查看jar具体版本号
  4. 职场老油条靠它升职后:还用Excel手动做报表?想想就可笑
  5. deepin安装windows虚拟机_Deepin Linux V20系统通过安装wine实现运行windows程序
  6. Docker学习总结(38)——开发环境中使用docker run安装Redis再总结
  7. jar包导出无法显示图片或者音乐_超详细微信表情包制作教程
  8. DICOM通讯(ACSE->DIMSE->Worklist)
  9. fw325r虚拟服务器连接失败,fw325r重置后不能联网怎么办?
  10. Building Trustworthy Semantic Webs
  11. [Luogu P3164] [BZOJ 3503] [CQOI2014]和谐矩阵
  12. Linux学习(完整)
  13. “凸现”三围的健身运动法(图)
  14. canvas教程17-合成
  15. 需求分析——系统需求和软件需求
  16. 想要通过炒币财富自由?先看看这篇文章吧!
  17. 5G时代即将来临,VR虚拟现实技术会得到更大发展,WebVR将逐渐走入大众视野!
  18. (Note)七彩虹30系列显卡——《一键超频》按键
  19. 自动驾驶——模型预测控制(MPC)理解与实践
  20. 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)

热门文章

  1. 【论文总结】Incremental Learning of Object Detectors without Catastrophic Forgetting(附翻译)
  2. ubuntu下安装git安装及使用
  3. 易经六十四卦详解白话文解释——易经64卦全解(上)
  4. len计算机语言,python中len的使用方法
  5. 企业级网络性能优化 课内8 vlanif2in1
  6. uint8_t图像数据类型介绍
  7. 关于启动 vue 项目出现 98% after emitting CopyPlugin 的解决方法!
  8. python 多态 知乎_Python鸭子类型和多态
  9. win10忘记密码,重装系统
  10. 暄桐教练日课·21天《灵飞经》报名啦