为什么我在 didFailWithError 后收到错误的 GPS 位置?

Why do I receive a wrong GPS position after didFailWithError?

我为 Apple Watch 2-3 开发了一个应用程序,它使用内部 GPS 来保存轨迹并获取速度、距离等信息。

该应用程序使用 Swift、XCODE9 编写并使用 CLLocation。

有时CLLocation发送didFailWithError,接下来的3-5个GPS位置完全错误,与真实点相距数百米。 我设置了 BestForNavigation 并检查了 horizo​​ntalAccuracy < 32m。我过滤过去的位置。

主要发生在手表进水的时候,哪怕是几厘米。

有人经历过吗?

谢谢

GPS卫星信号很弱;它们是从在您上方约 20,000 公里的轨道上运行的卫星传输的。要获得准确定位,GPS 接收器需要从 4 颗卫星获取信号(仅使用 3 颗卫星可以获得不太准确的定位)。

更糟糕的是,手表有一个相当小的 GPS 天线,GPS 系统使用的微波信号会被建筑物、树木、人体,尤其是水吸收。

老实说,考虑到困难,手腕上的这个小东西竟然能定位到10米以内的精度已经很了不起了。

你只需要用你得到的数据尽力而为。