0

我有一个这样的观察者:

[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];

因此,如果用户更改其地理位置,则会调用一个方法。但是我希望该方法也应该每 x 秒调用一次,因为如果用户不移动,则位置不会改变,因此不会调用该方法。但我必须做一些计算。

我怎么能那样做?

非常感谢提前和最好的问候。

4

2 回答 2

3

使用计时器

NSTimer *timer;
timer = [NSTimer timerWithTimeInterval:30 //seconds
                                target:self
                              selector:@selector(myMethodtoRun:)
                              userInfo:nil // send an object if you want
                               repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

以后如果想取消定时器,在方法myMethodToRun中,可以invalidate

- (void) myMethodToRun:(NSTimer *)timer {
    …
    if (shouldStopTimer) {
        [timer invalidate];
    }
}
于 2010-01-13T15:47:24.310 回答
0

MKMapView 不能让您对 GPS 设备进行太多控制。我建议使用 CLLocationManager,这样您就可以随时执行更新。然后你可以使用刚刚建议的 NSTimer @coneybeare。

在 CLLocationManager 中,您可以设置 distanceFilter,我相信它与 MKMapView 中的观察者执行相同的操作。

于 2010-01-13T15:55:06.027 回答