【问题标题】:How do you get a one-time location to a specified accuracy?你如何获得一个指定精度的一次性位置?
【发布时间】:2010-08-12 17:21:08
【问题描述】:

在文档中它说它获得了一个大概的位置,然后以越来越精确的精度不断更新。我有一个按钮

[locManager startUpdatingLocation];

然后我实现

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    [locManager stopUpdatingLocation];
}

并让它在某个地方找到方向。出于某种原因,当我开车去某个地方时,它不会更新位置。我认为这是因为它获得了“一般位置”,然后没有足够的时间来获得准确的读数。我也有

locManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;

有什么想法吗?只需要一次准确的读数。难住了。谢谢。

【问题讨论】:

    标签: iphone navigation gps cllocationmanager


    【解决方案1】:

    快速破解解决方案:

    if (newLocation.horizontalAccuracy > 2*locManager.desiredAccuracy) {
      return;
    }
    

    更好的解决方案可能是等到准确性停止提高,平均过去 5 次左右的更新。

    【讨论】:

    • 所以你是说在 didUpdateLocation 方法中放置一个计数器并让它在停止前运行 5 次?可能会奏效。我试试看。
    • 不,您比较五个 Horizo​​ntalAccuracy 值并等到它不再好转。贴一个计数器也应该可以,只要你有良好的 GPS 接收(你可能没有,那么它应该怎么做?),但 5 可能太少了。
    猜你喜欢
    • 2013-03-04
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多