【问题标题】:Improve accuracy of measured distance with GPS使用 GPS 提高测量距离的准确性
【发布时间】:2013-06-22 14:12:32
【问题描述】:

我目前正在测量用户步行/跑步/等的距离。当我将我的结果与其他应用程序的结果进行比较时,我的结果并不像其他应用程序那样准确(即 100m 是正确的,我的结果大约是 50m)。那么如何提高准确性以获得更准确的结果呢?

到目前为止,我正在做的是:

初始化 CLLocationManager:

locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
locationManager.distanceFilter = 10;

和:

- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *lastLocation = [locations lastObject];

    NSTimeInterval age = -[lastLocation.timestamp timeIntervalSinceNow];

    if (age > 30.0) return;

    if (lastLocation.horizontalAccuracy < 0) return; // ignore invalid updates

    if (previousLocation == nil || previousLocation.horizontalAccuracy < 0)
    {
        previousLocation = lastLocation;
        return;
    }

    CLLocationDistance distance = [lastLocation distanceFromLocation:previousLocation];

    if ([delegate respondsToSelector:@selector(currentDistance:)])
    {
        [delegate currentDistance:distance];
    }

    previousLocation = lastLocation;  

}

干杯!

【问题讨论】:

    标签: ios gps core-location distance cllocationmanager


    【解决方案1】:

    根据设置和设备硬件,通常以 3 种方式进行地理定位:

    • 蜂窝无线电
    • wifi 映射
    • 全球定位系统

    -desiredAccuracy 属性设置应该打开这三种模式中的哪一种。另一方面,您要求最新响应的最准确度是。首先,您将获得无线电(仅适用于手机设备),如果打开 WiFI 并且打开手机数据,您将获得 WiFi 地理位置,通常在 +- 100m 左右,并且在 GPS 之后很多(如果可用)。 GPS的延迟是由于两次搜索卫星和电池优化。对于跑步,我建议您使用所需的精度kCLLocationAccuracyBestForNavigation,一旦 GPS 发挥作用,您应该获得接近 +-10m 的值。
    另一件事是将-distanceFilter 设置为 5 米,如果 CoreLocation Manager 得到一个 delta >= 5 米的新测量值,它将调用委托方法。
    如果要排除水平精度大于某个值的位置,只需添加另一个逻辑条件。
    我建议您也阅读这些答案link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      相关资源
      最近更新 更多