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