【问题标题】:cllocationmanager - cllocation response object timestamp always less than one second old, why?cllocationmanager - cllocation 响应对象时间戳总是不到一秒,为什么?
【发布时间】:2011-09-15 12:40:48
【问题描述】:

使用核心位置 iphone api 获取一些位置。

它工作正常,但有一件事让我感到困惑。我回来的那些,我使用以下代码计算他们的“年龄”:

NSDate *eventDate = newLocation.timestamp;
NSTimeInterval locationAge = -[eventDate timeIntervalSinceNow];

然后我使用以下方法打印年龄:

NSLog(@"didupdateToLocation! lat: %f, lon: %f, accuracy: %f, age: %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude, newLocation.horizontalAccuracy, locationAge);

在我的输出中,年龄总是小于一秒。日志示例:

2011-09-15 14:31:40.417 Nuba[1393:707] didupdateToLocation! lat: 59.340484, lon: 18.052089, accuracy: 816.373281, age: 0.055586
2011-09-15 14:31:40.495 Nuba[1393:707] didupdateToLocation! lat: 59.340484, lon: 18.052089, accuracy: 816.373281, age: 0.125578
2011-09-15 14:31:40.565 Nuba[1393:707] didupdateToLocation! lat: 59.340477, lon: 18.051996, accuracy: 999.848989, age: 0.019127

这是为什么?肯定是第一次,手机不是每次都“碰巧”缓存不到一秒的旧位置吗?

我在计算年龄时做错了吗?

【问题讨论】:

    标签: iphone location core-location cllocationmanager


    【解决方案1】:

    您的计算似乎正确。如果定位服务已被后台应用程序使用,或者如果您有蜂窝服务,那么您可以在应用程序启动时轻松获得位置信息。

    您没有显示准​​确度,因此您的第一个位置可能(很可能)是低准确度(即:> 1000m 水平误差)位置,该位置是根据手机信号塔三角测量计算得出的,当手机在蜂窝网络上时始终可用。

    【讨论】:

    • 我只是觉得奇怪的是年龄总是那么短的年龄。我现在有数百个样本量,几乎从未超过一秒。在 Android 上,您会收到大量较旧的回复。是的,我也打印精度,有点低:) 有时它会变得更好,斯德哥尔摩的塔三角测量通常是 600-900 米的精度。但是除非 gps 连接上或者我在 wifi 上,否则三角测量通常不会变得更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    相关资源
    最近更新 更多