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