CLLocation速度

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

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

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

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

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

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

有什么建议吗?

提前致谢。

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

速度以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; } } 

您只能真正使用您在问题中建议的委托方法。

即使您每2秒访问[CLLocationManager位置],您也只会收到上次委托方法中最后收到的坐标。

为什么需要每两秒轮询一次? 在某些情况下,iphone可以在更短的时间内更新它的坐标。

HTH