Swift:使用纬度/经度时坐标不准确

Posted

技术标签:

【中文标题】Swift:使用纬度/经度时坐标不准确【英文标题】:Swift: Coordinates not accurate when using latitude/longitude 【发布时间】:2018-06-21 09:57:53 【问题描述】:

我在 Swift 中使用 CLLocationManager。 当我显示 location.coordinate 时,它​​会为我提供结果:

37.787358900000001,经度:-122.408227

但是,如果我显示。 location.coordinate.latitude,结果是

37.7873589

你知道我怎样才能得到所有的小数吗?

谢谢, 托马斯

【问题讨论】:

其实,如果我理解正确的话,这只是几毫米的问题? 多余的小数是this的结果。 你是使用“Float”类型变量来表示经纬度还是“CLLocationDegrees”? 将最后一个 9 更改为 8 将导致大约 1 厘米的变化。 GPS 系统甚至不能精确到那个水平,所以担心超出的小数位是没有意义的。 很有道理。那我就选择“短”版本。谢谢,伙计们:) 【参考方案1】:

您看到的是37.787358900000001 而不是37.7873589,因为nature of representing floating point numbers in a computer.

也就是说,担心第 6 位之后的小数位是没有意义的,因为即使将 9 更改为 8 也会导致大约 1 厘米的变化。 GPS 系统目前的精确度约为 +/- 5 米,新芯片being deployed by Broadcom 在不久的将来可以减少到约 +/- 30 厘米。

顺便问一下,你知道为什么海拔不断更新/变化,甚至 当设备静止在桌子上时?

高度计算是通过计算到每 12 小时绕地球一圈的可见 GPS 卫星的距离来完成的。由于卫星不断移动,并且不同的卫星进入视野,因此这些计算确实倾向于波动。 This article 虽然有点过时但很有启发性。

【讨论】:

以上是关于Swift:使用纬度/经度时坐标不准确的主要内容,如果未能解决你的问题,请参考以下文章

JSON结果的setValue(纬度/经度坐标为Double)到Swift中的CoreData

如何判断经纬度是不是准确

特定时期卫星下的地面经度/纬度(笛卡尔坐标)

手机百度地图如何查看准确的经纬度?

如何设置Xcode模拟器地图的当前位置

如何在不使用 Google 地图的情况下将纬度/经度转换为 HTML5 坐标?