将经度和纬度数据存储在数据库中,并查询附近的记录

时间:2010-07-28 10:19:00

标签: ruby-on-rails database geolocation

我正在创建一个使用地理位置的rails应用程序。可以为记录添加长度和纬度。如果有多个地理位置记录,可以看到附近记录的Google地图,就像Twitter地理定位一样。

如何存储坐标(我不介意做计算)并查找附近的记录?我的数据库是MySQL。

感谢。

4 个答案:

答案 0 :(得分:2)

根据您的要求,您可以采取两种方法:

  • 自己存储坐标(按照您的计划)。您应该查看支持MySQL后端的Geokit gem,并提供帮助以查找附近的位置。
  • 将您的合作伙伴与Simplegeo一起存储,您可以使用此gem。同样,这会照顾您的存储并在附近找到。

答案 1 :(得分:1)

从数据库中提取数据后,Geokit可以正常使用数据,但如果您希望使用空间数据从数据库构建查询,则不行。如果你只是使用mysql那么你就会陷入大量的计算困境。由于你使用的是rails,你至少有这个选项:http://freelancing-god.github.com/ts/en/geosearching.html,它应该为你处理大量的计算。

答案 2 :(得分:1)

您可以使用acts_as_solr_reloaded来索引和查询空间数据,这样您就不需要在主表中存储纬度和经度信息,而是创建一个迁移,创建一个本地表,用于存储纬度和经度信息。您可以使用纬度,经度和半径来查询solr索引。

答案 3 :(得分:0)

看看Geokit。它广泛用于基于地图的应用程序。