Und*_*ion 6 iphone gps core-location mapkit ios
我一直在测试CoreLocation各个方面的准确性,并惊讶地发现传递给CLLocationMangerDelegate方法的新旧位置提供的准确性值:( void)locationManager:didUpdateToLocation:fromLocation本身非常不准确.
走一段路面(沿着一段道路,沿着建筑物的一侧)我发现,虽然CLLocationManager声称它提供的CLLocations具有5米的水平精度,实际上MKUserAnnotation显示的位置是任何高达距离我所知道的位置30米(通常显示为一排建筑物的对面).这表明精确度读数本身并不准确.CLLocationManager告诉我它的坐标精确到5米以内但实际上多达30米.
为了澄清,这不是缓存/时间戳问题它在某些领域是可重复的,而不是随着时间的推移而改进的东西.
还有其他人遇到过这个问题吗?
CoreLocation不是一个人,也不知道你"真正"在哪里,是你问题答案的本质.它正在使用您设备上的传感器并为您提供最佳答案,并且能够知道其声明答案的准确性的问题反映出位置问题本质上非常困难.
要深入了解位置数据本身:CoreLocation从单元塔三角测量,附近的SSID以及最终的GPS中抽取,以确定设备的位置.它们具有不同程度的准确性,但它们的共同之处在于,如果您让设备工作更长时间,您将获得更准确的答案.但是,因为CoreLocation使用的所有工具在电池寿命方面都很昂贵,所以只要它产生符合"足够好"标准的答案,它就会停止.
这就是为什么另一个答案告诉你你的desiredAccuracy设置来kCLLocationAccuracyBestForNavigation
-当你这样做,你基本上是告诉CoreLocation"告诉我你已经得到了最好的,"和你也自愿参加了CPU的负荷,时间和电池与之相关的排水管.你也已经脱离了CoreLocation用来确定什么是"足够好"的正常规模 - 而不是提前告诉它何时可以停止,你基本上已经说过"我会告诉你什么时候它已经足够好了."
因此,CoreLocation将继续尝试为您提供更好的答案,直到您告诉它已完成为止,并且您需要履行自己的责任来决定这一点.这也是你需要牢记的是有限制的CoreLocation的剧目工具如何精确可以是-你可以得到很多的纬度和经度的显著数字,但冒险关规模,你自愿的找出这些数字值得信赖的任务.预定义的精度等级为10米,100米,1千米和3千米.CoreLocation的创建者选择那些截止点的事实应该告诉你一些问题的难度 - 如果更好的准确性很容易,它可能已经在框架中.
因此回过头来看:CoreLocation正在忠实地报告其答案的准确性,只是这些答案所依据的数据存在问题,如果它对其准确性声明的准确性有了更多了解,则会在其准确性声明中反映出来.考虑一下假设情况,其中CoreLocation确切地知道其准确性声明的准确程度,然后是CoreLocation对其准确性声明的准确程度一无所知的情况,并考虑如何设计API来解决问题.CoreLocation是可以肯定的,因为它可以合理地确定它是多么确定,如果你能找到一种易于管理的硬件限制方式来更加确定你是多么肯定,App Store的财富等待着您.
归档时间: |
|
查看次数: |
2959 次 |
最近记录: |