CLLocation返回负速度

13

我正在开发一个新的应用程序,该应用程序使用coreLocation和mapkit框架。

我的问题是尝试获取当前速度始终会返回负值。我带着iPhone到有良好3G信号的地方,但无论如何,location.speed的值总是-1。

以下是相关代码:

#define kRequiredAccuracy 1500.0 //meters
#define kMaxAge 60.0 //seconds

在init方法中:

self.locationManager=[[CLLocationManager alloc] init];
self.locationManager.delegate=self;
self.locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;

然后didUpdateToLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

    NSTimeInterval ageInSeconds = [newLocation.timestamp timeIntervalSinceNow];
    NSLog(@"Location: %@", [newLocation description]);

    if( newLocation.horizontalAccuracy > kRequiredAccuracy || fabs(ageInSeconds) > kMaxAge )
    {
        NSLog(@"inacurate position");
        [self.delegate inacuratePosition];

    }
    else {

    [self.delegate locationUpdate:newLocation andOldLocation:oldLocation];
    location=newLocation.coordinate;


    }


    if(tracking)
    {   
    [self updatePosition];
    }
    if(firstTime)
    {
        [self placeStartMark];
        firstTime=FALSE;
    }



}

最后,在我实现协议的视图控制器中:

- (void)locationUpdate:(CLLocation *)newLocation andOldLocation:(CLLocation*)oldLocation{

    double speed = [newLocation speed] *3.6;



    double altitude= [newLocation altitude];
    [self checkMaxSpeedAndAltitude:speed :altitude];
    if(speed< 0)
        speed=0;



    locationLabel.text=[NSString stringWithFormat:@"speed: %f km/h   altitude: %f m", speed,altitude];
}

我快要疯了,如果有人知道任何解决方案,那肯定会很有帮助。谢谢。


当谈到“好”的基于位置的应用程序时,你提到了一个良好的3G信号,但这几乎与此无关。如果你没有卫星视野,你将得不到好的信息。请检查你的水平精度是否小(小于200米),这是一个很好的方法来确认你是否有卫星信号而不仅仅是基站三角定位。 - KevinDTimm
我已经检查了一个水平精度为65米的事件,但我收到了负速度和高度。 - JonLOo
1个回答

16

通常情况下,如果使用的位置检测机制不支持,您将获得负高度和速度。例如,当使用Wi-Fi或基站三角定位时。您确定正在接收GPS更新吗?您是否在自由空间下进行测试?即使在此情况下,您仍将接收到WiFi和基站的位置更新,因此需要对它们进行过滤。

对于Wi-Fi位置更新,水平精度为65米较为典型。


最终我大致搞定了。无论如何,感谢您提供的信息,我不知道您无法通过WiFi或手机位置获取速度。 - JonLOo
我一直得到负速度。无论我使用WiFi还是蜂窝网络,或者在开阔天空中,都是如此。所有其他位置参数都是正确的。 - User382
1
当你没有GPS时,你会得到负速度。 - Ortwin Gentz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接