使用重定位框架计算速度在模拟器中显示而不是在device-ios8中

时间:2015-02-17 13:38:15

标签: ios objective-c core-location

我使用核心位置框架计算速度如下。但它在模拟器中工作而不在设备中(在设备中显示-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);

    }
 }
}

请建议。

1 个答案:

答案 0 :(得分:1)

  

该值反映了设备在当前航向方向上的瞬时速度。负值表示无效速度。由于实际速度可能会在后续位置事件的传递之间发生多次变化,因此您应将此属性仅用于提供信息。

因此,当你更频繁地获得分数时,这实际上应该给你速度。 由于您有距离,请考虑使用距离来查找速度。