调用`startUpdatingLocation`之后可以花费很长时间来调用`locationManager:didUpdateToLocation:fromLocation:`吗?

时间:2012-01-23 14:30:51

标签: objective-c ios cocoa-touch

到目前为止,我的经验是在调用locationManager:didUpdateToLocation:fromLocation:后几乎立即调用startUpdatingLocation

然而,我需要知道:我能不能依赖于这一点,总是那么快,即几乎是瞬间的?是否存在可能需要很长时间的情况?如果是这样,那些场景是什么?

(当然,在某些情况下会调用locationManager:didFailWithError:方法。所以也可以询问,如果调用此方法,可以依赖它几乎立即被调用。)

3 个答案:

答案 0 :(得分:0)

如果您没有完全强大的GPS信号或根本没有信号,CoreLocation可能会决定尝试使用Wi-Fi或移动互联网网络来确定您的位置。在这种情况下,此任务可能需要一段时间。

答案 1 :(得分:0)

不,你不应该依赖前几个更新。位置管理器逐渐安顿到一个准确的位置,而不是在它显示一些随机不准确的位置..

我执行此代码来过滤位置更新

   NSTimeInterval secondsSinceLastPoint = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
    if(secondsSinceLastPoint < 2)
    {
        return NO; //Not valid.
    }

答案 2 :(得分:0)

不,您不应该依赖于API规范中没有的计时行为。

此外,如果GPS电路或其他无线电刚刚从断电状态唤醒,您可能会获得第一个位置更新。