【问题标题】:CLLocation distanceFromLocation: returns zero on iOS 9. Is it a bug?CLLocation distanceFromLocation:在 iOS 9 上返回零。这是一个错误吗?
【发布时间】:2016-01-25 13:43:46
【问题描述】:

重现问题的代码:

-(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 输出:

距离:9021699.415204

iOS 9.1 输出:

距离:0.000000

location1location2 不为零。

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

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

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

【问题讨论】:

    标签: ios geolocation ios9 core-location


    【解决方案1】:

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

    【讨论】:

    • 不太明白您的建议。你能再解释一下吗?第一个纬度不在范围内 (-90, 90)。此外,我相信,该代码应该适用于任何有效的纬度/经度对。
    • 137 是您 location1 的纬度值。纬度范围应介于 (-90
    • 纬度的有效范围是个好点,谢谢。赞成你的答案。我想,我应该检查我们应用程序的服务器端。但我仍然不认为在这种情况下返回零是一个有效的反应。如果参数为 nil,它们会返回 -1,那么当输入不正确时,为什么它们会返回零(无论如何都是正常的返回值)?
    • 经纬度确实是混合的,谢谢。但我仍然认为返回零而不是一些特殊的负错误代码(就像他们为nil 所做的那样)不是一个好的行为。它应该改变或至少应该在文档中提及。这些天我会提交一份错误报告。
    • 是的,应该检查值的范围而不是返回 0 .. 我同意..
    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2011-06-15
    • 2015-12-06
    相关资源
    最近更新 更多