2011-11-30 51 views
0

我有超过6000的GPS位置的数据库的列表。 我想比较用户的当前位置,并检测用户是否在距离6000个位置中的任何一个10米的距离内。比较当前的位置到其他位置

我怎样才能做到这一点没有去thorugh所有的6000点,并计算它们的相对距离是多少?

感谢, 丹尼尔

UPDATE: 怎么样,如果我会把用户的当前位置在5 ^2米矩形中间,并提取所有与bottm_right之间current.latitude的位置。纬度和top_left.latitude同样适用于长期?

+0

看看这个答案http://stackoverflow.com/a/12997900/779408 – breceivemail

回答

0

一个简单的方法是创建另一个数据库或geohash修改当前的数据库索引。尽管这种方法不能很好地处理位置密度,所以如果你的分数分布不均匀,它可能没有太大的改进。

+0

我使用的核心数据,所以我不认为这是一种选择。谢谢 –

0

从逻辑上讲,除非6000个位置进行逻辑分组不知何故你将不得不通过所有6000

,如果你能控制的数据库结构,你可以整理GPS位置到位置的区域(即组那么这应该使你的6000下降到(根据你想要的细粒度)10,20,30或100组,这些组中的每一组都可以有一个中点位置和总距离组然后你可以通过组中的总距离循环,然后细粒从那里...

+0

因为我正在使用核心数据,所以我没有这种控制。谢谢。 –