2012-03-20 53 views
0

我有Android的SQLite数据库与包含经度,纬度和其他列的表..现在我想获得所有距离更小的记录或等于给定的距离。例如,我知道我当前的坐标(lat,long),我想从我的表格中获取距离我最大距离10km处的所有记录。我的位置和给定的距离值之间的距离的行的Android SQLite查询

我在栈上发现了一些链接,但没有太多实体。是否有人知道这个问题的优化解决方案?

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

+0

这比Android的一个SQL问题。你可能有更好的运气搜索SQL答案,或在谷歌上 – Mimminito 2012-03-20 19:58:52

回答

3

你可能想这样做的两个部分,

1)运行查询,你看到的是一个特定的值+或内的所有记录 - 您的位置当前的纬度/经度,where子句可能看起来像:

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

2)从上面的粗略结果中,使用大圆/半正弦方法来确定每个位置之间的实际距离是多少(大圆/有rsinse已经是android maps api的一部分)。

+0

谢谢你的帮助! – Cata 2012-03-24 21:51:28

3

只是为了记录,它可以是有用的。

我不知道你在做什么,或者如果你有一个后端或服务器。但是,如果你有一个存储这些位置的服务器,你可以(也应该)使用MongoDB来存储它。它对地理空间信息有很大的支持。

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

+0

很高兴知道这一点,但我无法访问服务器.. – Cata 2012-03-20 20:19:36