你好,我使用的是iOS应用程序中的位置,我设置的准确性如下:
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters我用这个函数来检查准确性
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(manager.location!.horizontalAccuracy)
if locations.last!.horizontalAccuracy <= manager.desiredAccuracy{
print(manager.location)
location = locations.last!
locationManager.stopUpdatingLocation()
locationManager = nil
}
}问题是,精度叠加到1414,永远不会达到100。有办法解决这个问题吗?
发布于 2015-12-22 17:59:25
这是硬件的一个限制,可能与您的特定位置相结合。如果您在室内编写代码,那么GPS将无法工作(尝试步行到窗口),因此您依赖的是WiFi,它的精度可能很差,或者依赖于任何地方都不太准确的蜂窝塔。
发布于 2015-12-22 18:55:15
iOS使用多个硬件选项来确定位置:蜂窝塔、wifi接入点、gps。这些选项按提高精度和功耗顺序列出。
iOS使用desiredAccuracy作为为您的请求服务的硬件的提示,操作系统将试图避免激活它认为不必要的硬件,以达到所需的精度。
我相信苹果并没有提供任何关于门槛值的具体信息。
在您的示例中,iOS似乎没有使用WiFi AP硬件(或者可能无法连接到服务器以访问AP数据库,或者您周围没有足够的已知AP),因此您获得的所有位置读数都来自蜂窝塔三角测量。
你可能想
而且,这不在书中,但是您可以通过查看速度值来判断位置读数是否来自GPS,如果它是无效的(小于零),则它不是GPS位置。
希望这能帮上忙,--亚历克斯
发布于 2015-12-22 17:56:38
What do horizontalAccuracy and verticalAccuracy of a CLLocation refer to?
horizontalAccuracy的1414表示水平(lat/lon)位置可能高达1414米(这只是一个估计的误差)。这可能是由蜂窝塔三角剖分或WiFi定位数据确定的位置。GPS定位通常报告100米或更高。 建立起来,似乎1414年是CLLocationManager给出的常数,如果它已经确定了你的位置,基于蜂窝塔三角测量。在我的测试中,如果它已经根据wifi确定了您的位置,则它的水平精度为65米。
https://stackoverflow.com/questions/34421541
复制相似问题