如何每4-5秒从用户位置获取距离

时间:2010-08-03 07:31:47

标签: iphone mapkit userlocation

我不是用它来驾驶方向或类似的。我有一些注释,当用户在其中一个附近时想要一个触发器,所以我可以提醒用户。

看来didUpdateToLocation只在每次startUpdatingLocation调用时被调用一次?至少当我在该方法中使用NSLog时,我只在控制台中获得一行。不,我不是带着iphone走来走去。

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

1 个答案:

答案 0 :(得分:3)

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

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以获得更高的准确性。