Ios CLLocationManager计算高程增益

Ios CLLocationManager计算高程增益,ios,cllocationmanager,Ios,Cllocationmanager,我正试图从CLLocationManager中计算出高程增益 这是我目前的代码: - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *oldLocation = [locations objectAtIndex:[locations count] - 1]; CLLocation *location = [locatio

我正试图从CLLocationManager中计算出高程增益

这是我目前的代码:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *oldLocation = [locations objectAtIndex:[locations count] - 1];
    CLLocation *location = [locations lastObject];

    double elevationChange = oldLocation.altitude - location.altitude;

    if (elevationChange > 0)
    {
        _netElevationGain += elevationChange;
    }
我认为这段代码应该可以正常工作,但当我测试它时,netElevationGain总是0。我做了一些研究,似乎我正在用iOS模拟器进行测试。我正在使用iOS模拟器调试菜单中的位置选项


可能是模拟器导致了这个问题,还是我的代码中遗漏了什么?

所以这里有一个潜在的问题:您是否有可能对这些位置进行反向地理编码?因为如果你这样做,我痛苦地发现,你会失去高度。如果您仔细考虑一下,这是有道理的,但更好的设计可能是让他们将反向地理编码位置建模为继承GPS衍生位置的所有属性。事实并非如此。因此,我最后做的是一个外部类,它获取LM位置,提取高度,然后将其注入最终的“地址”类。

添加更多信息。所以你用GPX文件设置了两个位置,你从一个位置转到另一个位置,希望看到高度变化?@rob hi,是的,没错,但值总是0是的,CLLocation的高度在模拟器上总是等于零。我不确定我是否使用反向地理编码,我不这么认为(对不起,我对Objective-c还是很陌生)