Ios 返回负速度的位置

Ios 返回负速度的位置,ios,iphone,geolocation,mapkit,core-location,Ios,Iphone,Geolocation,Mapkit,Core Location,我正在启动一个使用coreLocation和mapkit框架的新应用程序 我的问题是试图得到当前速度总是返回一个负值,我带着我的iPhone去了3g信号良好的地方,这没关系,location.speed值总是-1 以下是重要的代码: #define kRequiredAccuracy 1500.0 //meters #define kMaxAge 60.0 //seconds 在init方法中: self.locationManager=[[CLLocationManager alloc] i

我正在启动一个使用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;
然后单击UpdateToLocation:

- (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];
}
-(无效)位置更新:(CLLocation*)新位置和旧位置:(CLLocation*)旧位置{
双速=[新位置速度]*3.6;
双高度=[新位置高度];
[自检最大速度和高度:速度:高度];
如果(速度<0)
速度=0;
locationLabel.text=[NSString stringWithFormat:@“速度:%f km/h高度:%f m”,速度,高度];
}
我快疯了,所以如果有人知道任何解决方案,肯定会有帮助的。
感谢

通常,如果使用的位置检测机制不支持,您会得到负高度和负速度。例如,当使用Wi-Fi或小区三角测量时。你确定,你正在获得GPS更新,所以你在自由天空下测试吗?即使这样,你仍然会收到WiFi和手机发射塔位置更新,所以你必须过滤掉它们


65米的水平精度是Wi-Fi位置更新的典型要求。

您提到了良好的3G信号,而这与“良好”的基于位置的应用几乎无关。如果你看不到卫星,你就得不到好的信息。检查你的水平精度是否很小(不到200米),这是一个很好的骗局,看看你有卫星,而不仅仅是细胞塔三角测量)我检查了一个,即使水平精度为65米,我也收到了一个负速度和高度。最后我让它工作得更少了。无论如何,谢谢你提供的信息,我不知道你不能通过wifi或手机定位获得速度。我总是获得负速度。无论我是在使用WiFi还是手机发射塔,还是在户外,这都无关紧要。所有其他位置参数都是正确的。当你没有GPS时,你会得到负速度。