我每隔0.1秒使用以下代码更新位置 -
- (void)viewDidLoad
{
[super viewDidLoad];
CLController = [[CoreLocationController alloc] init];
CLController.delegate = self;
// set auto update timer
currentTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
selector:@selector(updatestart) userInfo:nil repeats:YES];
}
-(void)updatestart
{
[CLController.locMgr startUpdatingLocation];
}
然后我尝试使用
计算速度- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
[locMgr stopUpdatingLocation];
NSLog(@"%f",newLocation.speed);
}
我的速度以米/秒为单位,但经过一段时间后,过程变慢,即使我停止行驶,也会计算出速度。
我想要的是获得准确的速度并在速度超过12公里/小时时显示警报。
我可以使用其他方法找到相同的方法吗?
谢谢..
答案 0 :(得分:3)
启动和停止位置管理器不是这样做的方法。您无法强制它提供更多位置更新。让它保持运行并平均随时间更新位置。要获得最佳准确度,请使用kCLLocationAccuracyBestForNavigation
作为位置管理员的desiredAccuracy
。