ios - CLLocation distanceFromLocation : returns zero on iOS 9. 是bug吗?

标签 ios geolocation ios9 core-location

重现问题的代码:

-(void)testDistance {
    NSLog(@"Test distance...");

    CLLocation *location1 = [[CLLocation alloc] initWithLatitude:137.02954600000001 longitude:50.543728999999999];
    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:55.79676300 longitude:49.10834400];

    CLLocationDistance distance = [location1 distanceFromLocation:location2];
    NSLog(@"Distance: %lf", distance);
}

iOS 8.4 输出:

Distance: 9021699.415204

iOS 9.1 输出:

Distance: 0.000000

location1location2 不为零。

我在 SO 中搜索了一个类似的问题,但找不到。对我来说看起来像是 iOS 9 的错误。你同意吗?你得到类似的结果吗?我想向 Apple 发送错误报告,但我想先确认一下。

我在模拟器(iOS 8.4 和 iOS 9.1)上运行了代码。系统语言设置为俄语,地区设置为俄罗斯。

更新:latlon 结果是混合的。纬度应在 [-90, 90] 范围内。在以前的 iOS 版本中,它仍然产生了一些结果。在 iOS 9 中,他们让它返回 0。对于这种情况,我认为这不是一个好的返回值,因为它是一个完全有效的值。我认为他们应该返回一些错误代码(就像他们对 nil 所做的那样,返回 -1)。至少,它必须在文档中提及。我打算在不久的将来提交错误报告。

最佳答案

检查 location1 的纬度值 .. 我猜与纬度范围 (-90 , 90) 有一些不匹配。

关于ios - CLLocation distanceFromLocation : returns zero on iOS 9. 是bug吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346082/

相关文章:

ios - 使用 iPad2 临时分发进行 Beta 测试的逻辑步骤是什么?

ios - TableViewController 的 viewDidLoad 未触发

android - 如何允许应用程序访问设备的位置

Javascript - 返回变量失败

java - 有没有谷歌地球的替代品

iphone - 程序在gldrawarray崩溃

ios - 屏幕旋转后 UIPanGestureRecognizer 无法进入 .ended 状态

javascript - Cordova - window.history.back() 不适用于 iOS 9 中的 HTML 后退按钮

ios - viewDidDisppear 导致错误后的 performBatchUpdates?

ios - 多种类型的 segue 仍然无法移动 View Controller