gpt4 book ai didi

ios - 如何处理不正确的 CLLocation 数据

转载 作者:行者123 更新时间:2023-11-29 03:42:07 24 4
gpt4 key购买 nike

我正在开发一款健身跟踪应用程序,例如 Runtastic、Nike+ 等。我将绘制从开始到结束的整个事件图。我不会在应用程序启动时开始更新位置更改,而是在用户开始锻炼时开始更新。但是当locationManager开始更新时,前3到5个CLLocations是非常不正确的。误差可达一公里。我使用以下代码来初始化位置管理器:

self.locationManager = [(PFAppDelegate *)[[UIApplication sharedApplication] delegate] locationManager];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
self.locationManager.distanceFilter = 5.0;
[self.locationManager startUpdatingLocation];

并在locationManagerDidUpdateToLocation方法中:

 if( didFindGPS == NO )
{
if( [[lastLocation timestamp] timeIntervalSinceNow] < 10.0 )
{
if( [lastLocation horizontalAccuracy] < 20)
{
didFindGPS = YES;
}
}
}
else
{
//process data here
}

这不会过滤掉那些最初的错误位置。我还尝试忽略 Horizo​​ntalAccury 值小于 20 的位置,但应用程序不会处理任何位置。

可以采取哪些措施来改进第一个位置或处理第一个不正确的位置?

最佳答案

改变

if ([lastLocation horizontalAccuracy] < 20)...

if (([lastLocation horizontalAccuracy] > 0) && ([lastLocation horizontalAccuracy] < 20))...

根据 documentation

A negative value indicates that the location’s latitude and longitude are invalid.

horizo​​ntalAccuracy 的负值。

如果您想设置处理数据的条件(看起来像您所做的那样),您应该将代码重写为:

if (([lastLocation horizontalAccuracy] > 0) && ([lastLocation horizontalAccuracy] < 20))
{
didFindGPS = YES;
//process the data here... since here the location fits your limitations
//and you don't loose the first location (as in original code)
}
else
{
didFindGPS = NO;
}

请注意,此代码可能会给您一些丢失 GPS 的错误警报,因此您可能需要省略 else block 。

关于ios - 如何处理不正确的 CLLocation 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com