【发布时间】:2012-01-03 23:28:48
【问题描述】:
我一直在测试 CoreLocation 各个方面的准确性,并惊讶地发现传递给 CLLocationMangerDelegate 方法的新旧位置提供的准确性值:(void)locationManager:didUpdateToLocation:fromLocation 本身非常不准确。
走一段人行道(沿着一段道路,一侧有建筑物)我发现虽然 CLLocationManager 声称它提供的 CLLocations 具有 5 米的水平精度,但实际上 MKUserAnnotation 显示的位置是距离我知道自己所在位置不超过 30 米的任何东西(通常显示为一排建筑物的对面)。这表明准确度读数本身并不准确。 CLLocationManager 告诉我它的坐标精确到 5 米以内,但实际上在 30 米之外。
澄清一下,这不是缓存/时间戳问题。它在某些领域是可重复的,并且不会随着时间的推移而改进。
还有其他人遇到过这个问题吗?
【问题讨论】:
-
AFAIK 准确度数据仅告诉您当前使用的位置源的平均准确度(使用 GPRS 三角测量相当差,而使用信号良好的 GPS 则相当好)。它绝不是权威的。
-
您检查时间戳是否是最近的? (可能是一个带有相对旧时间戳的缓存位置)
-
@Romain 那么你是说准确度值是基于给定手机可以访问用于定位的来源的准确度估计值?
-
@Till Yes。这不是时间戳问题。它发生在某些特定区域。
-
@Romain 谢谢。但这仍然没有真正加起来。按照这种逻辑,如果位置不准确,肯定是由于缺乏定位数据而导致的不准确——视线内的卫星太少、基站信号弱等,为什么准确度估计会不准确。估计准确度的代码必须意识到它没有足够的数据来进行准确的估计,并且应该给出一个低准确度值。
标签: iphone ios gps mapkit core-location