locationManager 定位地址不准,获取回调更准的方法

原来的写法,这种写法获取第一次返回的结果,然后就会停止更新经纬度

- (void)operationLocations:(NSArray *)locations{
    [self.locationManager stopUpdatingLocation];
     ....
     ....
}

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations
   [self operationLocations:locations];
}

猜想:LocationManager  定位回调会多次回调,及多次纠偏。所以,如果是最后一次,则是最准确的。

了解到:

// 延迟0.2s执行,如果有新任务,则取消原先的任务。最终只执行最后一次任务。

[[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:sender];

[self performSelector:@selector(todoSomething:) withObject:sender afterDelay:0.2f];

于是新写法如下:

- (void)operationLocations:(NSArray *)locations{
    [self.locationManager stopUpdatingLocation];
     ....
     ....
}

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations{

  [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(operationLocations:) object:locations];
    [self performSelector:@selector(operationLocations:) withObject:locations afterDelay:0.2f];

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 07:15:46

locationManager 定位地址不准,获取回调更准的方法的相关文章

IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法

IOS7 WGS-84转GCJ-02(火星坐标) CLLocationManager类可以实时的获得我们位置的经纬度,并且可以通过经纬度在MapView上定位: [objc] view plaincopyprint? //创建CLLocationManager对象 CLLocationManager *locationManager = [[CLLocationManager alloc] init]; //设置委托对象为自己 [locationManager setDelegate:self]

IOS_地图_定位_天气预报_Block回调_单例

H:/1021/00_block回调.h /* 通过block回调 定义block代码块,目的是解析完成之后调用 返回值是 void 参数是 数组,里面的每个成员是一个NSString*/ typedef void(^WeatherFinishedBlock)(NSArray *dataList); @interface WeatherXMLPaser : NSObject // 解析器解析数据,参数1是要解析的数据,参数2是解析完毕回调的代码块 - (void)parserWeatherDat

获取网页URL地址及参数等的两种方法(js和C#)

转:获取网页URL地址及参数等的两种方法(js和C#) 一 js 先看一个示例 用javascript获取url网址信息 <script type="text/javascript"> document.write("location.host="+location.host+"<br>"); document.write("location.hostname="+location.hostname+&

微信实现定位城市并获取城市编码

最近在做一个项目是将用户的当前所在市县定位出来并展示在手机端页面,同时还要获取到该市县的城市编码从而进行数据过滤,这里重点讲定位城市及获取城市编码 前端页面代码: 首先引用腾讯地图的一个js <script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js" ></script> 同时在页面加载

QT通过IP地址定位地址(用get方法取数据)

通过IP地址定位地址,是要通过查询数据库,如果自己做一个这样的数据库工作量就比较大,所以在网上找了一个查询IP地址的网址,通过调用这个网址查询来实现,但是这个有一定的弊端,如果没有网络或者这个网址不可用时,就无法查询.具体代码如下: QEventLoop loop; QNetworkAccessManager manager;    QNetworkReply *pReply = manager.get(QNetworkRequest(QUrl("http://www.ip38.com/&quo

php 通过ip获取所在城市地址信息 获取计算机外网ip

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

[转载]Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

原文地址:点击打开链接 为什么要写这篇文章 1.      因为最近在学习<软件调试>这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了KiFastCallEntry这个函数. 2.      碰巧前天又在网上看到了一篇老文章介绍xxx安全卫士对Windows系统调用的Hook,主要就是Hook到这个函数 3.      刚刚做完毕业设计,对使用中断来实现系统调用的方式记忆犹新. 以上原因导致我最近眼前总是出现系统调用这

(转)zigbee &gt;TI Z-stack协议栈各种地址的获取

第一种方法,利用NLME.h里面定义的专门API 获取设备自身IEEE地址/** This function will return a pointer to the device's IEEE 64 bit address** This function resides in nwk_util.c.*/extern byte *NLME_GetExtAddr( void ); 获取设备自身网络地址/** This function will return this device's 16 bi

比较安全的获取站点更目录

<?php// 获取站点更目录,结尾不带 “\”$root=isset($_SERVER['DOCUMENT_ROOT'])?$_SERVER['DOCUMENT_ROOT']:(isset($_SERVER['APPL_PHYSICAL_PATH'])?trim($_SERVER['APPL_PHYSICAL_PATH'],"\\"):(isset($_['PATH_TRANSLATED'])?str_replace($_SERVER["PHP_SELF"]