我正在尝试计算 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/