【问题标题】:Android SQLite query for rows with distance between my location and a given distance valueAndroid SQLite 查询我的位置与给定距离值之间的距离的行
【发布时间】:2012-03-20 19:54:55
【问题描述】:

我在 Android 中有一个 SQLite 数据库,其中包含一个包含经度、纬度和其他列的表。现在我想获取距离小于或等于给定距离的所有记录。

例如,我知道我当前的坐标(纬度,经度),我想从我的表中获取距离我最远 10 公里的所有记录。

我在堆栈上找到了一些链接,但没有什么太可靠的。有没有人知道这个问题的优化解决方案?

我认为我可以获得所有纬度小于我的纬度 + 距离且大于我的纬度 - 距离和经度小于我的长途 + 距离且大于长途的记录。在这个查询之后,我应该检查一些不需要的记录,因为查询不只返回想要的记录.. 这是个好主意吗?

【问题讨论】:

  • 这更像是一个 SQL 问题,而不是 Android。搜索 SQL 答案或在 Google 上搜索可能会更好

标签: android sqlite distance


【解决方案1】:

你可能想分两部分来做,

1) 运行查询,在其中找到所有位于当前位置的 lat/lng 某个值 + 或 - 内的记录,where 子句可能如下所示:

其中 (@latitude > (lat - .001) 和 @latitude > (lat - .001)) 和 (@longitude> (lng- .001) 和@longitude> (longitude- .001))

2)根据上面的粗略结果,使用大圆/haversine方法确定每个位置之间的实际距离是多少(大圆/haversinse已经是android maps api的一部分)。

【讨论】:

    【解决方案2】:

    只是为了记录,它可能很有用。

    我不知道您要做什么,或者您是否有后端或服务器。但是,如果您确实有一个存储这些位置的服务器,那么您可以(并且应该)使用 MongoDB 来存储它。它对地理空间信息有很好的支持。

    这是一个使用 MongoDB 做你想做的事的例子:http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-Querying

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-04
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多