2010-08-03 52 views
3

我没有使用它来获取驾车路线或类似信息。我有一些注释,并且当用户在其中一个附近时需要触发器,所以我可以提醒用户。如何从用户位置每隔4-5秒获取一次距离

看起来didUpdateToLocation每startUpdatingLocation调用只调用一次?至少当我在该方法中使用NSLog时,我只能在控制台中获得一行。不,我没有用iphone走动。

所以:设置userLocation的连续监测并获得“回调”(3-4秒过去或用户移动了10米时)的正确方法是什么?

回答

4

正如你可能知道,这是初始化和启动位置管理器代码:

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将不会被调用。你可以做的唯一的事情就是设置distanceFilterdesiredAccuracy就像我在例子中给你的准确度最高。

更新

使用kCLLocationAccuracyBest代替kCLLocationAccuracyNearestTenMeters为了更准确。

+0

感谢您的回答!我无法立即想到修补userLocation以便能够正确测试的方法。 我只是在那里实施距离警报器,让别人来测试它。它实际上比使用时间间隔更好。 准确性=最好,过滤器= 10m是同一件事,如果不是,为什么不呢? (如果你知道。) – 2010-08-03 08:34:12

+0

你说得对,kCLLocationAccuracyBest比较好。很确定kCLDistanceFilterNone是最好的。文档说明使用kCLDistanceFilterNone时的所有通知。 – 2010-08-03 08:50:20

+0

嗯,实际上我的意思是说,移动10米是一个很好的标准,可以频繁更新,而不会太频繁地获取它们(或者静静地站立,如果两个都设置为'最好/没有',你会得到什么?) 因此,我只是想知道“准确度=最佳+过滤器= 10m”和“准确度= 10m +过滤器=无”哪一个给出了最恰当的结果,就是这样。 :) – 2010-08-03 09:33:23

相关问题