我正在开发一个游戏,我想在其中监控用户的位置。而且它应该如此频繁,就像游戏就是要击中我附近的用户一样,如果我击中他并且同时用户移出范围,那么这对我来说将是一个失误。
我知道一种方法可以调用具有时间间隔的位置更新方法,但这对我来说似乎不太好,还有其他方法可以实现吗?
如果您在 core-location 上设置 distanceFilter,然后使用 startUpdatingLocation 启动位置跟踪,则只要您移动设置的距离,您就会得到更新。您想要做的事情可能很困难,具体取决于您希望“触摸”有多“接近”,因为慢速移动的位置不是非常准确,并且可能需要时间来更新。使用小于 10m 作为触摸可能很困难。
您可以为此使用核心位置框架。委托方法如:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { // Check if the class assigning itself as the delegate conforms to our protocol. If not, the message will go nowhere. Not good.
[self.delegate locationUpdate:newLocation];
}
}
当用户更新位置时调用此方法。你也可以看看这个教程。