CLLocationDistance方法不累积距离

时间:2014-10-07 18:51:01

标签: ios variables cllocationmanager cllocationdistance

我已经实现了下面的代码,通过使用CLLocationDistance方法添加(累积)所有点对点距离来计算gps使用的总距离。我创建了一个计数器(_locManagerIteration),并在第一次迭代中将第一个locationManager对象复制到我的pastCoordinate属性。在每次下一次迭代中,我使用CLLocationDistance方法计算pastCoordinate对象和新loc对象之间的点对点距离。在程序运行中,我看到_pointDistance变量(double)正在收集距离,但总距离(_totalDistance)变量(也是double)总是与_pointDistance变量相同(即没有距离累积)。由于某些莫名其妙的原因,语句_totalDistance = _totalDistance + _pointDistance要么未执行,要么_totalDistance变量始终为零。下面的两个NSLog语句都显示了相同的结果......你能帮忙吗???

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    _locManagerIteration++;

    CLLocation* loc = [locations lastObject];

    if (_locManagerIteration == 1) {
        self.pastCoordinate = [locations lastObject];
    } else {

        CLLocationDistance _pointDistance = [self.pastCoordinate distanceFromLocation:loc];
        NSLog(@"POINT TO POINT DISTANCE = %f", _pointDistance);
        _totalDistance = _totalDistance + _pointDistance;
        self.pastCoordinate = [locations lastObject];
    }

    NSLog(@"TOTAL DISTANCE = %f", _totalDistance);

1 个答案:

答案 0 :(得分:0)

您观察了多少次迭代?在做这个实验的时候你真的很努力吗?您正在使用的GPS模式可能非常不准确,尤其是在封闭空间中。然后,新位置可能总是出现在同一位置,您最终会添加零。