Android Google地图查找附近预先列出的位置

时间:2016-10-24 19:48:27

标签: android google-maps

我的数据库中存储的lat / long标识的地方列表越来越多。现在在UI前面有一个带有地方自动完成文本框的屏幕意味着如果我键入一个位置,下拉菜单会出现一些地方,当我选择相机移动到那里的位置时。此外,我需要在附近显示位置(存储在我的数据库中的位置)。现在的问题是如何做到这一点?我可以用

SphericalUtil.computeDistanceBetween()

但问题是我无法从数据库中获取所有纬度/经度并计算距离而不会影响性能。

1 个答案:

答案 0 :(得分:1)

您需要计算数据库中的距离。有两个基本选项:

  • 在数据库中实现自己的距离方法:
    • 如果你的位置彼此接近并接近测试纬度/ lng,你可以使用毕达哥拉斯定理(在所有情况下都不正确的基本方法)
    • 要解决所有可能的情况,你可以实现你自己的haversine formula(半正式公式给出一个球体上两个点之间的大圆距离,从它们的经度和纬度,并用于用SphericalUtil.computeDistanceBetween()方法计算距离。
  • 使用GIS数据库。您可以使用SpatiaLite for Android并使用ST_Distance功能过滤您的位置:
SELECT *
FROM yourtable
WHERE ST_DISTANCE(Geometry, MakePoint(yourXcoordinate, yourYcoordinate)) < yourdistance