У меня есть приложение, которое использует CoreLocation
и отслеживать движение пользователя.
Когда пользователь идет пешком или вождение, я сохраняю каждую координату в локальной базе данных (lat/lng/alt), поэтому я могу рисовать маршрут на основе сохраненных координат.
Несколько дней назад я добавил Cumulative elevation gain и я использую этот код вВычисление кумулятивного повышения высоты дает мне wierd результаты
didLocationUpdate:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
netElevationGain += MAX(0, oldLocation.altitude - newLocation.altitude);
}
Но что-то просто неправильно.
Я начал приложение и начал ходить и ходить пешком несколько миль, и я получаю netElevationGain
почти в 500 метрах. Который никоим образом не является правильным.
Это список netElevation
сохраняется в базе данных для каждой точки:
0,41,43,44,47,52,55,62,73,80,91,100,114,140,146,153,159,180,199,208,228,240,259,275,320,329,349,359,366,375,381,392,408,419,428,437,446,449,462,469,478,486
Высоты
0.000000,181.678055,181.891495,182.786850,179.315399,177.035721,182.636307,181.259399,178.653015,192.552551,185.398819,182.693436,181.369766,154.306747,157.031693,159.748871,185.080856,198.080673,176.473877,178.646851,175.784424,178.184128,181.237488,188.956894,177.713181,193.673019,188.470184,182.749054,181.966507,181.547592,191.638657,198.713989,188.582977,197.977921,203.184540,205.108856,198.304123
Для отображения получить я использую простой select max(gain) from table where ...
UPDATE
Теперь я получаю худшие значения (в порядке убывания):
Alt:
200.334869,200.594666,196.293945,195.240234,191.800446,192.622375,179.951385,179.185577,179.681122,177.843719,183.459595,174.170502,0.000000
усиления:
307,301,294,285,275,269,252,246,234,227,217,202,0
Вычислены ли значения 'netElevation' из' высот, которые вы наклеили ниже? –
Да. Это из той же базы данных. Я храню высоту, и в то же время я храню текущую netElevation. Моя главная проблема заключается в том, что я считаю, что это число должно быть меньше. Поэтому мне интересно, что я делаю неправильно. – 1110
Я также не вижу, как значения высоты соответствуют вашим высотам (например, откуда взялось значение 41?). Вы должны распечатать их вместе в таблице. - Не должно быть 'newLocation.altitude - oldLocation.altitude'? И вам, возможно, придется игнорировать первое изменение «0 -> 181.678055'. –