我已经实现了下面的代码,通过使用 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);