CLLocation速度

Fer*_*and 9 iphone performance objective-c cllocation ios

我正在开发GPS应用程序.你知道如何检测移动设备的速度吗?

实际上,我需要每2秒检测一次速度.

我知道didUpdateToLocation当位置改变时调用方法.

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
Run Code Online (Sandbox Code Playgroud)

但我认为这种方法不适合我的问题.

那么,我需要[CLLocationManager location]在2秒内检查速度吗?

有什么建议吗?

提前致谢.

小智 27

下面的代码如何使用委托方法.或者,如果您确实想要轮询,则保留您之前的位置并检查距离上次轮询更改的距离,并使用手动方法(也如下所示)计算速度.

速度以m/s计算/提供,因此对于kmph乘以3.6或对于mph乘以2.23693629.

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
   //simply get the speed provided by the phone from newLocation
    double gpsSpeed = newLocation.speed;

    // alternative manual method
    if(oldLocation != nil)
    {
        CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation];
        NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
        double calculatedSpeed = distanceChange / sinceLastUpdate;

    }   
}
Run Code Online (Sandbox Code Playgroud)

  • 出于兴趣,这两个选项中的更好(在准确性方面)? (6认同)