我有一个这样的观察者:
[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];
因此,如果用户更改其地理位置,则会调用一个方法。但是我希望该方法也应该每 x 秒调用一次,因为如果用户不移动,则位置不会改变,因此不会调用该方法。但我必须做一些计算。
我怎么能那样做?
非常感谢提前和最好的问候。
我有一个这样的观察者:
[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];
因此,如果用户更改其地理位置,则会调用一个方法。但是我希望该方法也应该每 x 秒调用一次,因为如果用户不移动,则位置不会改变,因此不会调用该方法。但我必须做一些计算。
我怎么能那样做?
非常感谢提前和最好的问候。
使用计时器
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];
}
}
MKMapView 不能让您对 GPS 设备进行太多控制。我建议使用 CLLocationManager,这样您就可以随时执行更新。然后你可以使用刚刚建议的 NSTimer @coneybeare。
在 CLLocationManager 中,您可以设置 distanceFilter,我相信它与 MKMapView 中的观察者执行相同的操作。