正如你可能知道,这是初始化和启动位置管理器代码:
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];
并实行didUpdateToLocation这样的:
- (void) locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*) oldLocation
{
// This will be called every time the device has any new location information.
}
系统将每次打电话didUpdateToLocation
该位置有更新。如果系统未检测到位置变化didUpdateToLocation
将不会被调用。你可以做的唯一的事情就是设置distanceFilter
和desiredAccuracy
就像我在例子中给你的准确度最高。
更新
使用kCLLocationAccuracyBest代替kCLLocationAccuracyNearestTenMeters为了更准确。
感谢您的回答!我无法立即想到修补userLocation以便能够正确测试的方法。 我只是在那里实施距离警报器,让别人来测试它。它实际上比使用时间间隔更好。 准确性=最好,过滤器= 10m是同一件事,如果不是,为什么不呢? (如果你知道。) – 2010-08-03 08:34:12
你说得对,kCLLocationAccuracyBest比较好。很确定kCLDistanceFilterNone是最好的。文档说明使用kCLDistanceFilterNone时的所有通知。 – 2010-08-03 08:50:20
嗯,实际上我的意思是说,移动10米是一个很好的标准,可以频繁更新,而不会太频繁地获取它们(或者静静地站立,如果两个都设置为'最好/没有',你会得到什么?) 因此,我只是想知道“准确度=最佳+过滤器= 10m”和“准确度= 10m +过滤器=无”哪一个给出了最恰当的结果,就是这样。 :) – 2010-08-03 09:33:23