【问题标题】:CLLocationManager working out elevation gainCLLocationManager 计算海拔增益
【发布时间】:2014-03-31 19:30:57
【问题描述】:

我正在尝试计算 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 模拟器的调试菜单中使用位置选项。

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

【问题讨论】:

  • 添加更多信息。因此,您使用 GPX 文件设置了 2 个位置,并且从一个位置移动到另一个位置并期望看到海拔变化?
  • @rob 嗨,没错,但值始终为 0
  • 是的,CLLocation 的高度在模拟器上总是为零。

标签: ios cllocationmanager


【解决方案1】:

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

【讨论】:

  • 我不确定我是否是反向地理编码,我不这么认为(对不起,我对 Objective-c 还是很陌生)
猜你喜欢
  • 1970-01-01
  • 2020-04-30
  • 2012-03-04
  • 1970-01-01
  • 2014-10-17
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多