0

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

- (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);
4

1 回答 1

0

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

于 2014-10-07T19:42:10.980 回答