【问题标题】:iPhone CoreLocation - accuracy not working correctly?iPhone CoreLocation - 准确性无法正常工作?
【发布时间】:2010-08-15 21:55:45
【问题描述】:

我正在开发一个使用 gps 的应用程序。我需要高精度,所以我使用 kCLLocationAccuracyBestForNavigation 来获得所需的准确度。 当我运行应用程序时,会按预期调用以下方法。

(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

在此方法中,我正在检查以下代码段的准确性是否足够好:

if (newLocation.horizontalAccuracy <= locationManager.desiredAccuracy) {
...
}

但是这个 if 块永远不会激活,因为 newLocation.horizo​​ntalAccuracy 不会低于 17.00 米。当我在 iPhone 3GS OS 3.1.2 上运行此代码时,一切运行正常。但自从我升级到 4.0.1 后,似乎准确性存在问题。它甚至不适用于在 iOs 3.1.2 上运行平稳且稳定的 kCLLocationAccuracyNearestTenMeters。

你对我有什么提示吗?我该如何解决我的问题?

【问题讨论】:

    标签: ios4 cllocationmanager


    【解决方案1】:

    您的 if 块的问题在于,您将horizontalAccuracy(以米为单位报告)与desiredAccuracy(设置为常量值kCLLocationAccuracyBestForNavigation)进行比较。这些常量没有在文档中定义,但其他常量只是枚举。所以 kCLLocationAccuracyBestForNavigation 可能只是字面上等于 0。您的 Horizo​​ntalAccuracy 永远不会小于或等于零。

    您需要根据实际数字测试水平精度。我得到的最好的水平精度是 5.0。因此,您可能需要将 if 语句更改为 !(newLocation.horizontalAccuracy &gt; 5.0)

    【讨论】:

      【解决方案2】:

      我需要更正我的最后一个答案。 kCLLocationAccuracyHundredMeters 实际上解析为 100。公里 (1000) 和 threkilometers (3000) 也是如此。因此,您可以使用它们进行比较。但是,kCLLocationAccuracyBest 为 -1,BestForNavigation 为 -2。因此,您无法将您的水平精度与那些进行比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 2014-02-15
        • 2011-04-22
        • 2013-10-03
        相关资源
        最近更新 更多