CLLocationManager 在蜂窝网络 (3G) 中未获得位置准确性
Posted
技术标签:
【中文标题】CLLocationManager 在蜂窝网络 (3G) 中未获得位置准确性【英文标题】:CLLocationManager Not getting Location Accuracy In Cellular Network (3G) 【发布时间】:2014-07-08 04:06:27 【问题描述】:我在使用蜂窝网络的位置准确性方面遇到问题。
以下是我的问题
有时定位精度在蜂窝网络 (3G) 中非常完美
有时位置精度并不完美,相差一英里。
对于 WiFi,它的工作非常完美。
以下是我的代码
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[locationManager startUpdatingLocation];
请问我的代码有什么问题。
【问题讨论】:
【参考方案1】:蜂窝网络位置提供了手机存在的大致区域。它基于服务提供商的塔。所以我建议使用 gps 位置跟踪,以便您获得手机的确切经纬度。
经度和纬度可用于查找有关位置、天气等位置的更多详细信息。
请参考this
【讨论】:
【参考方案2】:这是因为您无法通过卫星(3G 或 4G)强制设备定位
您(应用程序)只能访问设备获取的位置(如果有权限)。
当您获得最高精度 kCLLocationAccuracyBestForNavigation
时,它会尝试获得最大精度(首先 GPS,然后是三角测量/网络 + 附加传感器数据)(不推荐,这仅适用于“导航”它消耗太多能量并假设它已插入)。
对此请参考Core Location Constants Reference
如果您在户外,一开始可能没有确切的位置,可能需要一些时间才能获得手机可用的最佳位置。
请参考CLLocationManager desiredAccuracy
的文档
请求高精度位置数据时,初始事件 定位服务提供的准确度可能与您不符 请求。定位服务尽快交付初始事件 尽可能。然后它继续确定位置 您要求的准确性并在必要时提供其他事件, 当数据可用时。
【讨论】:
以上是关于CLLocationManager 在蜂窝网络 (3G) 中未获得位置准确性的主要内容,如果未能解决你的问题,请参考以下文章