Ios4 iPhone CoreLocation-精度无法正常工作?

Ios4 iPhone CoreLocation-精度无法正常工作?,ios4,cllocationmanager,Ios4,Cllocationmanager,我正在开发一个使用gps的应用程序。我需要高精度,因此我使用kCLLocationAccuracyBestForNavigation以获得所需的精度。 当我运行应用程序时,会按预期调用下面的方法 (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ 在此方法中,我检查以下代码段

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

(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
在此方法中,我检查以下代码段的准确性是否足够好:

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

if(newLocation.horizontalAccuracyif块的问题是,您正在将以米为单位报告的
horizontalAccuracy
所需的精确度
进行比较,后者设置为常量值
KCallocationAccuracyBestforNavigation
。文档中未定义这些常量,但定义了其他常量只是枚举了。所以kCLLocationAccuracyBestForNavigation可能只是字面上等于0。您的水平精度永远不会小于或等于零


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

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