地理位置异步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中两个位置之间的估计时间[关闭]

Flink异步请求高德地图获取位置信息

从数组中查找最近的位置(iOS)[关闭]

在 iOS (Swift) 中使用后台位置更新的最佳方式 [关闭]

关闭应用程序时的 iOS 7.1 CoreLocation 和地理围栏

使用 Swift 通过触摸任意位置来关闭 iOS 键盘