您在这里遇到的问题是您正在组合:
- GPS 坐标 (WGS84),用于表示球体上的点。
- 毕达哥拉斯定理,需要一个二维直角坐标系来确定距离。
如果您追求准确性,这根本行不通!
以下是我使用过的一些选项。
选项 1 - 使用大圆距
此公式用于计算两个 GPS 坐标之间的距离(以米为单位)
Android 提供了一个函数distanceBetween作为 android.location.Location 类的一部分来帮助解决这个问题。
缺点是您必须从 SQLite 中提取所有点才能计算距离。
我还看到了一些混合动力车,例如:
- 将 WGS84 (GPS) 视为矩形
- 在您的数据库中指定一个区域以限制您在计算距离时提取的数据大小。
然后使用 distanceBetween 函数进一步过滤结果。
选项 2 - 使用直角坐标系
如果您的距离很小,那么您可以通过将数据库点存储在矩形 UTM 中来解决这个问题。
使用几乎相同的公式,但使用东距和北距,SQLite db 可用于提供最接近 UTM 点的 x 个点。一旦确定了这些点,就可以对 x 结果执行平方根函数以获得以米为单位的距离。
嗯?
使用 UTM 也有一些注意事项。它可能会帮助您查看计算两组坐标之间的距离
因此,您的解决方案最终取决于您的应用程序,并且是速度和准确性之间的折衷方案。