2012-07-18 2 views
0

CLLocationManager를 사용하여 사용자가 이동 한 거리를 적극적으로 (정확하게) 추적하는 방법을 알고 싶습니다. 현재 내 코드는 다음과 같습니다.CLLocationManager를 사용하여 거리를 능동적으로 추적하는 방법

- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation { 
    totalDistance += [newLocation distanceFrom:oldLocation]/kMilesToMeters; 
} 

그러나 주행 기록으로 확인한 결과는 매우 정확하지 않습니다. 사용자가 이동하는 동안 거리를 더 정확하게 계산하는 방법이 있습니까?

고맙습니다.

+0

desiredAccuracy와 distanceFilter를 설정 했습니까? – Eyal

답변

0

GPS가 정확하지 않습니다. 때로는 다른 곳으로 "텔레포트"하여 다시 데려다 줄 수 있습니다. 따라서 가장 먼저해야 할 일은 거짓 데이터를 모두 필터링하는 것입니다. 너무 자주 바뀌는 위치는 무시해도됩니다. GPS는 p1 (x, y)에 있음을 알리고 잠시 후에 p2 (x + 20m, y + 10m)에 있음을 알리면 위치가 p3 (x + 2m, y + 3m). 그래서 분명히 p2는 잘못된 위치 일 것이고 당신은 그것을 무시할 수 있습니다.

거리를 직접 계산하지 않고 점진적으로 그 값을 추정하는 것이 좋습니다. (최소 제곱 법이 좋을 수도 있고, 어려운 수학을 좋아한다면 칼만 필터를 볼 수도 있습니다.)

관련 문제