iphone - 使用 CoreLocation 防止零星坐标

标签 iphone ios gps core-location

基本上我正在制作一个应用程序,该应用程序应该记录某人旅行的路径和数据。我在准确性和确定不准确的报告方面遇到了一些麻烦。这是我的 iPhone 记录的路径图像。红线是记录的路径,粉红色是我实际走的路(为巨大的屏幕截图道歉):

Path

我用于记录数据的委托(delegate)如下所示:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    if (newLocation.horizontalAccuracy < 0) return;
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
    // The "> 50.0f" is to hopefully throw out inaccurate points
    if (locationAge > 5.0 || [newLocation distanceFromLocation:oldLocation] > 50.0f) return;
    [[self locationPoints] addObject:newLocation];
    [self updateView];
}

我看到的一些建议是使用过滤器来检查数据是否适合投影路径。这是最好的方法吗?

最佳答案

您可以添加对 newLocation.horizo​​ntalAccuracy 的检查:

if ((newLocation.horizontalAccuracy > 0.0) && (newLocation.horizontalAccuracy < 10.0))

或者,对于您的情况:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    if (newLocation.horizontalAccuracy < 0) return;
    NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
    
    if ((locationAge > 5.0)||(newLocation.horizontalAccuracy < 0.0)||(newLocation.horizontalAccuracy > 10.0)) return;
    [[self locationPoints] addObject:newLocation];
    [self updateView];
}

这个 (locationAge > 5.0) 条件看起来很奇怪。你真的想要吗?如果您将其保留在您的应用程序中,则当设备失去适当的 GPS 信号 >5.0s 时,您的应用程序将停止更新。

还有一件事:您是否记得设置您的 locationManager:

locationManager.desiredAccuracy=kCLLocationAccuracyBest;

您还应该知道这会消耗大量电池电量,但用于测试...

关于iphone - 使用 CoreLocation 防止零星坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9707638/

相关文章:

iphone - 如何使具有不同 subview 的UITableViewCell可重用?

iphone - 即使 userInteractionEnabled 设置为 NO,UITextField 也会显示光标

ios - 在 UIView 上绘制径向渐变(圆形)

ios - iOS 8.1 iPad Air 2-图像加载内存错误

iphone - 更改导航栏的颜色

iphone - 如何在 iOS 版 Phone Gap 中使用 WSDL Web 服务?

ios - ios swift 在播放视频的过程中显示广告

objective-c - 使用 MKMapView 的 showUserLocation 属性

iOS9 在后台不跟踪位置

android - 如何处理应用程序被HOME按钮最小化