iphone按时间间隔获取用户位置

时间:2011-07-08 00:01:49

标签: iphone objective-c gps core-location cllocationmanager

我浏览了stackoverflow中的一些问题,但我无法得到清晰的图片。我正在开发一个iPhone应用程序,它涉及通过GPS获取用户的位置并根据我获得的值进行处理。我只是想确保我该如何实现这个?使用此方法:

[locationManager startUpdatingLocation]

给了我准确的位置,但它经常不断更新,我不想要。我希望定期获取用户的位置。即每2分钟一次。我该如何实现?

我想到的方法(10秒间隔):

- (void)viewDidLoad { 
    self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone;
    NSTimer *currentTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(theActionMethod) userInfo:nil repeats:YES];
}

并在计时器的操作方法中:

- (void)theActionMethod {
     [locationManager startUpdatingLocation];
}

和方法didUpdatetoLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
     self.startingPoint = newLocation;
     NSString *latitudeString = [[NSString alloc] initWithFormat:@"%g\u00B0", newLocation.coordinate.latitude];
     NSLog([@"Latitude : " stringByAppendingString:latitudeString]);
     [latitudeString release];
     [locationManager stopUpdatingLocation];
}

现在我得到的值始终保持不变。每隔10秒更新一次,但所有值都保持不变(我尝试打印经度,水平精度,高度,垂直精度等)。所以,请帮助我如何准确(至少有点准确,因为我知道GPS不准确)用户的位置每2分钟。

我还想知道如何实现monitoringRegions和significantlocationchange事项。有没有人成功实施过它?我不能这样做。我没有注意到任何变化(我在didEnterRegion中打印了一些东西,即使我来回进出该区域也从未打印过)。非常感谢。

1 个答案:

答案 0 :(得分:2)

做你正在做的同样的事情。只需忽略委托方法,然后根据需要更改theActionMethod:以使用locationManager.location属性。