【问题标题】:CLLocationManager update location is not accurateCLLocationManager 更新位置不准确
【发布时间】:2025-11-04 22:45:02
【问题描述】:

我正在使用CLLocationManager 访问用户位置,以下委托方法返回的坐标不准确

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

}

【问题讨论】:

  • 如果不准确,则可能设备正在建设中或有风暴。
  • @GeneCode 设备在公园内。但是 gps 指向公园对面的建筑物

标签: ios objective-c cllocationmanager


【解决方案1】:

位置数据的准确性。

locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.distanceFilter = kCLLocationAccuracyHundredMeters

您应该为此属性分配一个适合您的使用场景的值。

例如如果您只需要一公里内的当前位置,则应指定kCLLocationAccuracyKilometer 而不是kCLLocationAccuracyBestForNavigation。更准确地确定位置需要更多时间和更多精力。

【讨论】:

  • 实际上,我需要绘制一条走开我的应用程序的用户的折线。行走时 CLLocationManager 给出了错误的坐标。
【解决方案2】:

locationManager:didUpdateToLocation:fromLocation: 已弃用。推荐使用locationManager:didUpdateLocations:。 它告诉代理有新的位置数据可用。最近的位置更新在数组的末尾locations


以下是您可以探索的属性:

distanceFilter: 在生成更新事件之前,设备必须水平移动的最小距离(以米为单位)。

desiredAccuracy:位置数据的准确性。

【讨论】:

  • 实际上,我需要绘制一条走开我的应用程序的用户的折线。行走时 CLLocationManager 给出了错误的坐标。
  • kCLLocationAccuracyBestForNavigation 是可能的最高准确度。你应该尝试设置它。但即便如此,我相信这个位置也不能完美到点。总会有一些错误的余地
  • 是的,但这适用于户外。但在室内或进入公园的人时位置不准确
  • 我认为这种仅使用CLLocation 的跟踪是不够的,我认为您应该探索可能需要额外硬件设置的 NFC。
【解决方案3】:

你说的“不准确”有两种情况。

  1. 不是您期望的当前位置。
  2. 您当前所在位置的经纬度略有差异。

案例 1:更改您在 iPhone 中的当前位置,然后再次尝试获取您的位置。

案例 2:在这种情况下,您应该为位置管理器的对象设置一些值,例如所需的精度和距离过滤器。

另外,在此方法中分享您的代码。也许你做错了什么。

谢谢!

【讨论】:

  • 看看如果我正在进入公园,我的当前位置指向一栋建筑物,并且当我在当前位置仍在更新的地方等待时,它正在移动附近的地方。你得到..?
  • 嗯,如果您在 Google 地图上注意到许多位置确实显示了道路附近的位置,而不是确切的位置。假设你在其中,但谷歌地图会显示你在附近道路的位置。明白了吗???
  • 但我没有使用 gps 选项作为导航类型