9

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

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

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

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

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

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

有什么建议吗?

提前致谢。

4

2 回答 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;

    }   
}
于 2009-10-10T16:24:18.500 回答
0

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

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

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

高温高压

于 2009-10-02T11:33:17.137 回答