找到给定半径内的附近位置

时间:2011-11-13 16:55:52

标签: ruby-on-rails ruby-on-rails-3 gmaps4rails

我已经为我的数据库中不同的有趣位置存储了纬度和经度。 每当用户点击任何有趣的地方时,节目页面会显示该位置的详细信息,以及带有指向它的标记的谷歌地图。

现在我一直在努力实现“显示附近地点”按钮,以及范围下拉(例如50公里,100公里,150公里),但无法弄清楚如何去做。

我想知道如何使用我数据库中的纬度和经度从所选位置找到给定范围内的邻近地点。

3 个答案:

答案 0 :(得分:3)

您应该使用geocoder,它提供内置方法,例如:

Venue.near([40.71, 100.23], 20)    # venues within 20 miles of a point

答案 1 :(得分:1)

如果你需要精确 - 你需要牢记地球的形状 - 它不是一个平面。因此,选择您的准确度(简单球体,WGS84)并为其编写一些数学。你使用什么数据库?其中一些可以使用spartial inedxes进行操作,这可能非常有用。

答案 2 :(得分:0)

这是一个简单 - 不准确但快速的方法,请查看SO small distance

它使用简单的技术逻辑来解决现实世界中的许多问题,但它很快但不打算做得准确