大量位置地理编码的策略

我有一个应用程序使用Google Maps API对纬度/长度对之间的距离进行地理编码,以便在手机上显示靠近您的人(目前是​​Android,在iPhone上工作)。 问题在于,即使有40个用户的测试组,我们也需要花费10秒钟来完成计算并将结果发送回用户。 虽然10秒听起来很长时间,但就客户端应用而言,这并不是一个问题,因为它不是人们位置的实时更新(更新每隔几分钟发生一次)。 显然这是一个问题,因为我们显然喜欢增加到数十甚至数十万用户。 我很好奇是否有其他人在使用Google Maps API计算大量数据点之间的距离方面有任何经验?

另外,我们在服务器上使用Rails,这是所有位置计算正在进行的地方。 电话仅显示地图并使用纬度/经度坐标更新服务器。

看看Geokit ,它是一个Ruby Gem和Rails插件,可以做你想要的更多,我想你也会对速度和function感到非常满意。

当您已经有纬度/经度坐标时,您不需要谷歌地图API来计算距离。 使用半正弦或vincenty公式可以计算大圆距离 。

编辑:如果我正确理解您的问题(在10,000条记录中找到一个给定位置的近距离位置),我只能建议使用一些地理库来实现此目的。 当有更多请求进入时,计算10k距离是一个坏主意。你一定要研究更智能的算法(四叉树似乎很实用)。

如果覆盖特定区域,在进行任何计算之前,您可能需要考虑将lat long转换为局部等距投影。 或者更简单地说,如果覆盖全局区域,将lat long转换为最近的两个UTM区域,存储两组XY坐标和两个UTM区域ID。 然后,您可以先选择UTM区域匹配的记录,然后使用第二个投影坐标对该子集进行计算(这将比计算lat长度的距离快得多)。