2

I am wanting to calculate total elevation loss and gain at the end of recording Core Location data. I am having a hard time thinking of the math for this one.

Say if I started at 600 feet and I go up and down during the tracking, how would I calculate my elevation gain and loss?

Ideas?

Nic Hubbard
  • 41,587
  • 63
  • 251
  • 412

2 Answers2

2

If you wanted to track gain and loss separately, keep two cumulative member variables, netElevationLoss and netElevationGain, both initialized to 0.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if(oldLocation == nil)
        return;

    double elevationChange = oldLocation.altitude - newLocation.altitude;
    if (elevationChange < 0)
    {
        netElevationLoss += fabs(elevationChange);
    }
    else
    {
        netElevationGain += elevationChange;
    }
}

You could also track total change using this method since

netElevationChange = netElevationGain - netElevationLoss 

at any time.

matheeeny
  • 1,714
  • 2
  • 17
  • 32
-2

If you go up, increase one number. If you go down, increase (or decrease?) the other.

Exactly how you decide to handle noise is up to you...

tc.
  • 33,468
  • 5
  • 78
  • 96