ios - CLLocationManager 计算海拔增益

标签 ios cllocationmanager

我正在尝试计算 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 位置的外部类,提取海拔高度,然后将其注入(inject)最终的“地址”类。

关于ios - CLLocationManager 计算海拔增益,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770509/

相关文章:

iphone - stopMonitoringForRegion with dummy lat long but the right "identifier"

ios - CLLocationManager startMonitoringForRegion : not relaunching app after device restart

ios - iOS:降低背景位置更新的频率

android - 谷歌应用程序的授权方式是什么?

iphone - 将自签名证书导入我的 iPhone

iphone - 如何在 iphone 中单击左侧 Controller 的 TableView 行更改中心 View ?(MFSideMenu)

ios - 已经在过渡时试图关闭演示 Controller

ios - boundingRectWithSize为UILabel添加了额外的底部填充

ios - 如何在 iOS 屏幕关闭时继续监视 iBeacon?

ios - 永远不会调用iOS 8 CLLocationManagerDelegate方法