当您CLLocationManager
的代表收到符合您所需准确度的位置更新时,您可以轻松停止跟踪位置。
要开始更新位置,请执行以下操作:
CLLocationManager *locationManager = [CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];
然后实现适当的CLLocationManagerDelegate
方法:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *foundLocation = [locations lastObject];
if (foundLocation && foundLocation.horizontalAccuracy < kYourDesiredAccuracyInMetres)
{
[manager stopUpdatingLocation];
//Do whatever else with the location you've established
}
}
您应该能够通过检查返回的返回位置的准确性并停止更新或让它们继续(如果您需要更高的准确性)来调整它以满足您的要求。
当您开始更新位置时设置一个计时器也是一个好主意,如果您在设定的时间内没有找到位置,则停止更新。您还应该实现locationManager:didFailWithError:
委托方法来检查您是否可以访问位置服务。