地理位置异步iOS [关闭]
Posted
技术标签:
【中文标题】地理位置异步iOS [关闭]【英文标题】:Geolocation asynchronous iOS [closed] 【发布时间】:2013-03-18 07:59:12 【问题描述】:我想在后台使用 thred 进行地理定位!但我不能,我尝试了调度程序、线程、操作等......但我都阻止了progressBar的进度。
【问题讨论】:
CLGeocoder 方法已经是异步的并且在后台运行。 您的意思是要查找设备位置吗?即经纬度?还是要查找设备所在位置的名称? ... 因为当我 startupdatelocation 进度条停止等待完成位置然后继续前进? 【参考方案1】:我在这样的位置使用单例对象...
@implementation LocationManager
#pragma mark - singleton method
+ (LocationManager*)sharedInstance
static dispatch_once_t predicate = 0;
__strong static id sharedObject = nil;
dispatch_once(&predicate, ^
sharedObject = [[self alloc] init];
);
return sharedObject;
#pragma mark - instance methods
-(id) init
if (self = [super init])
_currentLocation = [[CLLocation alloc] init];
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
_locationManager.delegate = self;
return self;
- (void)start
[self.locationManager startUpdatingLocation];
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
//if the time interval returned from core location is more than two minutes we ignore it because it might be from an old session
if ( abs((int) [newLocation.timestamp timeIntervalSinceDate: [NSDate date]]) < 120)
self.currentLocation = newLocation;
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
// [[[UIAlertView alloc] initWithTitle:@"Error" message:[error description] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
@end
那我只需要打电话……
[[LocationManager sharedInstance] start];
单身人士将开始跟踪位置。
比我打电话...
[[LocationManager sharedInstance] currentLocation];
当前位置。
然后您可以使用它来传递到 CLGeocoder 已经异步的方法中。
您不能依赖启动位置跟踪然后立即获得位置。你需要使用这样的方法。
【讨论】:
【参考方案2】:CLGeocoder 正在后台运行。
【讨论】:
以上是关于地理位置异步iOS [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS (Swift) 中使用后台位置更新的最佳方式 [关闭]