首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS定位精度

iOS定位精度
EN

Stack Overflow用户
提问于 2015-12-22 17:40:53
回答 3查看 8.9K关注 0票数 5

你好,我使用的是iOS应用程序中的位置,我设置的准确性如下:

代码语言:javascript
复制
 locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters

我用这个函数来检查准确性

代码语言:javascript
复制
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。有办法解决这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-22 17:59:25

这是硬件的一个限制,可能与您的特定位置相结合。如果您在室内编写代码,那么GPS将无法工作(尝试步行到窗口),因此您依赖的是WiFi,它的精度可能很差,或者依赖于任何地方都不太准确的蜂窝塔。

票数 4
EN

Stack Overflow用户

发布于 2015-12-22 18:55:15

iOS使用多个硬件选项来确定位置:蜂窝塔、wifi接入点、gps。这些选项按提高精度和功耗顺序列出。

iOS使用desiredAccuracy作为为您的请求服务的硬件的提示,操作系统将试图避免激活它认为不必要的硬件,以达到所需的精度。

我相信苹果并没有提供任何关于门槛值的具体信息。

在您的示例中,iOS似乎没有使用WiFi AP硬件(或者可能无法连接到服务器以访问AP数据库,或者您周围没有足够的已知AP),因此您获得的所有位置读数都来自蜂窝塔三角测量。

你可能想

  • 要求更高的精度,但一旦获得所需的精度,就立即停止更新,或者
  • (假设iOS9)使用新的requestLocation()方法,该方法至少对电池更加友好,最多可能会尝试对要激活的硬件做出更智能的决定--注意到I没有测试“至多”的假设,将有兴趣了解它是否正确。

而且,这不在书中,但是您可以通过查看速度值来判断位置读数是否来自GPS,如果它是无效的(小于零),则它不是GPS位置。

希望这能帮上忙,--亚历克斯

票数 4
EN

Stack Overflow用户

发布于 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米。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34421541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档