2014-10-07 1 views
0

CLLocationDistance 메서드를 사용하여 모든 점대 점 거리를 더하고 (누적하여) gps 사용으로 총 거리를 계산하려면 아래 코드를 구현했습니다. 카운터 (_locManagerIteration)를 만들고 첫 번째 반복에서 첫 번째 locationManager 객체를 내 pastCoordinate 속성에 복사합니다. 다음 반복마다 CLLocationDistance 메서드를 사용하여 pastCoordinate 개체와 새 Loc 개체 사이의 지점 간 거리를 계산합니다. 프로그램 실행 중에는 _pointDistance 변수 (double)가 거리를 수집하고 있지만 총 거리 (_totalDistance) 변수 (double 값)는 _pointDistance 변수와 항상 동일하므로 누적 거리가 없습니다. 설명 할 수없는 이유로 인해 _totalDistance = _totalDistance + _pointDistance 문은 실행되지 않거나 _totalDistance 변수는 항상 0입니다. 아래의 두 NSLog 명령문 모두 같은 결과를 보여줍니다 ... 도와 주시겠습니까 ???CLLocationDistance 메서드가 거리를 누적하지 않습니다.

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

답변

0

얼마나 많은 반복을 관찰 했습니까? 이 실험을 할 때 실제로 움직입니까? 사용중인 모드의 GPS가 실제로는 정확하지 않을 수 있습니다 (특히 닫힌 공간에서). 그런 다음 새 위치가 항상 같은 위치로 나타날 수 있으며 결국 0이 추가됩니다.

+0

나는 많은 반복 (10 회 이상)을한다. 포인트 거리 (CLLocationDistance 방법으로 계산 한 값은 3에서 10 (미터) 사이입니다.) 실험은 집에서 수행되지만 차에서 앱을 사용할 때 결과는 동일합니다. XCODE의 버그? CLLocationDistance 호출에서 _poinDistance 변수 색상이 검은 색 (비 ivar)이고 NSLog를 통해 인쇄 할 때 변수 coror가 녹색으로 표시됩니다 (ivar 변수에 맞음). – DaliGR