2017-05-15 2 views
0

RunKeeper 또는 Nike +를 사용하면 현재 속도가 많이 뛰게됩니다 (4.30/km로 달리면 4-5min/km의 속도를 보일 수 있지만 전체 거리와 평균 속도 아주 좋은 것입니다.iPhone으로 실행할 때 가장 정확한 "현재 속도"를 얻으십시오

난 내 자신의 실행중인 응용 프로그램을 개발하기 시작하고 아마 CLLocationManager에서 바로 데이터를 사용하는 것으로 나타났습니다. 여기에 현재 속도 나이키 +로 비슷한 결과를 얻을 수 내 스위프트 3 코드입니다.

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

    for location in locations { 

     print("GOT LOCATION \(location)") 

     if location.horizontalAccuracy < 20 { 

      if self.locations.count > 0 { 

       distance += location.distance(from: self.locations.last!) 
      } 
      self.locations.append(location) 
     } 
    } 
} 

더 나은 현재 페이스를 얻는 최선의 방법은 무엇입니까? 현재 페이스는 "last 30 seconds"로 확장 될 수 있습니다 도와주세요. 실행 내 전화에 나이키 + 동시에 사용시 5 초/km (또는 가능한 한 작게)

답변

0

진행 UPDATE 나는 다음과 같은 설정을 사용하고 있는데 코드를 테스트하는

- 오류 이익률은 최대 +해야한다 , Styrd footpod (매우 정확한 것으로 알려져있는)와 Garmin Fenix ​​3 시계.

을 locationManager에서 다음
_locationManager.desiredAccuracy = kCLLocationAccuracyBest 
_locationManager.activityType = .fitness 
_locationManager.distanceFilter = kCLDistanceFilterNone 

:이 코드를 사용하여

if location.horizontalAccuracy < 40 { 
    distance += location.distance(from: savedLocations.last!) 
} 

내가 나이키 +와 가민에 비해 20 % 더 거리를 얻을.

이 비율은 전체 실행 중에 유지되므로 Nike +가 5km를 기록하면 코드가 6km 기록됩니다.

GPS 위치는 종종 수평 정확도가 낮기 때문에 실제 거리를 정확하게 측정하려면 추가 작업이 필요합니다. 저는 단순히 비율을 Nike +, 즉 10/12,3 = 0.81 비율로 맞추면 어떻게 될지보고 싶었습니다.

그래서 나는

distance += location.distance(from: savedLocations.last!) * 0.81 

에 코드를 변경하고 어제 같은 10km를 달렸다. 이번에는 결과가 나왔습니다.

My code 9.04 km (or 11.16 if I wouldn't have used * 0.81) 
Nike+ 10.00 km 
Garmin 9.66 km 

그래서이 비율은 실제로 0.81보다 0.9입니다. 그래서 Nike +가하는 뭔가가 있어야합니다.

가장 우울한 사실은 내 코드가 처음으로 12.3km, 두 번째로 11.16km 기록되었다는 것입니다.

아이디어 :

필요한 정확도를 높이십시오 (더 낮은 값). 내 아이폰 7+ 과 도시에서 잘 작동하는

if location.horizontalAccuracy < 40 { 

그러나 나는 분명히 내가 오히려

설정 distanceFilter 잘못된 40m가 하나보다 더 업데이 ​​트를 얻을 것 (40)를 필요로 예를 들어 10

에 대한
_locationManager.distanceFilter = 10.0 

이러한 아이디어는 모두 생성 될 위치 업데이트의 수에 영향을줍니다. 이것은 차례로 주자가 "직선"으로 덜 흔들리는 것처럼 보입니다. 이렇게하면 우리가 원하는 거리가 더 짧아집니다.그러나 평균 달리기 트레일의 균형 잡힌 정확도입니까? 작은 회전은 집어 들지 않습니다. * 0.81 접근 방식이 더 정확할까요?

아마

_locationManager.distanceFilter = 10.0 
if location.horizontalAccuracy <= 20 

오늘 시도하고 그 날 걸리는 위치를 볼 수 있습니다.

관련 문제