iPhone GPS准确度 - 即使设备静止,读数也会发生变化

时间:2011-10-04 06:57:37

标签: iphone objective-c gps

我正在开发一款应用程序,用于计算从起点到终点的行程距离。 我做了所有事情来获得不断变化的坐标并测量这些坐标之间的距离。 现在真正的问题是,即使我几秒钟后我的iPhone保持静止,GPS读数显示偏差,CLLocationDistance告诉我,我已经移动了几百米,而我也没有移动一点。 有什么我可以做的提高我的应用程序的精度吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

iPhone上的GPS工作可以保留电池。第一组坐标将是手机最后知道的坐标。 根据您所希望的准确度,它将尝试获得更好的解决方案,首先将在wifi或手机信号塔上使用三角测量。

过了一段时间GPS信号通过并给你一个更精确的位置,iOS只会在你告诉它或者是否满足所需精度时才会停止更新。

您可以做的是检查收到的位置的准确性,看看它是否符合您的标准。 没有办法只获得最累积的修正,这只需要一些时间。

答案 1 :(得分:1)

在您的应用中无法提高GPS的精确度,但您可以提高结果的准确性。

首先,尝试使用CLLocationManger的distanceFilter。

/*
 *  distanceFilter
 *  
 *  Discussion:
 *      Specifies the minimum update distance in meters. Client will not be notified of movements of less 
 *      than the stated value, unless the accuracy has improved. Pass in kCLDistanceFilterNone to be 
 *      notified of all movements. By default, kCLDistanceFilterNone is used.
 */
@property(assign, nonatomic) CLLocationDistance distanceFilter;

也是您想要的准确度

/*
 *  desiredAccuracy
 *  
 *  Discussion:
 *      The desired location accuracy. The location service will try its best to achieve
 *      your desired accuracy. However, it is not guaranteed. To optimize
 *      power performance, be sure to specify an appropriate accuracy for your usage scenario (eg,
 *      use a large accuracy value when only a coarse location is needed). Use kCLLocationAccuracyBest to
 *      achieve the best possible accuracy. Use kCLLocationAccuracyBestForNavigation for navigation.
 *      By default, kCLLocationAccuracyBest is used.
 */
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

最后,您应该使用检索到的位置更新的准确性。根据准确性丢弃无效数量的位置更新是摆脱那些不那么有效的位置的好方法。但也要注意,需要一些时间才能获得真正漂亮的gps准确度信号。