我使用核心位置框架计算速度如下。但它在模拟器中工作而不在设备中(在设备中显示-1)。
self.curSpeedLabel.text = [NSString stringWithFormat:@"%.2f km/h", newLocation.speed];
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
loc = locations.lastObject;
if (_startDate == nil) // first update!
{
_startDate = loc.timestamp;
totalDistance = 0;
}
else
{
totalDistance += [loc distanceFromLocation:_lastLocation];
CLLocationDistance distanceChange = [loc
distanceFromLocation:_lastLocation];
NSTimeInterval sinceLastUpdate = [loc.timestamp
timeIntervalSinceDate:_lastLocation.timestamp];
// speedLabel.text=[NSString stringWithFormat:@"%.f km/h",
// (distanceChange)/(sinceLastUpdate)];
self.curSpeedLabel.text = [NSString stringWithFormat:@"%.2f km/h",
loc.speed];
_lastLocation = loc;
distanceLabel.text =[NSString stringWithFormat:@"%.2f km/h",
(totalDistance/metersInKM)];
NSTimeInterval travelTime = [loc.timestamp
timeIntervalSinceDate:_startDate];
if (travelTime > 0)
{
avgSpeed = (totalDistance) / (travelTime);
_avgSpeed.text = [NSString stringWithFormat: @"%.2f km/h", avgSpeed];
NSLog(@"Average speed %.2f", avgSpeed);
_totTimetaken=(travelTime/60/60);
}
}
}
请建议。
答案 0 :(得分:1)
该值反映了设备在当前航向方向上的瞬时速度。负值表示无效速度。由于实际速度可能会在后续位置事件的传递之间发生多次变化,因此您应将此属性仅用于提供信息。
因此,当你更频繁地获得分数时,这实际上应该给你速度。 由于您有距离,请考虑使用距离来查找速度。