RoR:使用google maps api检查其他位置半径范围内的位置

时间:2013-05-19 06:34:08

标签: ruby-on-rails ruby-on-rails-3 google-maps geocoding gmaps4rails

我正在使用google maps fo rails gem https://github.com/apneadiving/Google-Maps-for-Rails/。我试图找到一种方法,通过它我可以看到一个位置是否在地图圈内。例如

@circles_json = '[
 {"lng": -122.214897, "lat": 37.772323, "radius": 1000000},
]

这有助于我创建圆圈。但是,我怎么看,'位置B'是否在@circles_json内?

我在考虑使用gem ruby geocoder http://www.rubygeocoder.com/。如果是这样,我该如何继续呢?我看过轨道广播。但它主要取决于本地数据库。我正在寻找的是查看我的数据库中输入的两个位置是否彼此接近。在这种情况下,半径为50米。

感谢任何指导。

由于

1 个答案:

答案 0 :(得分:7)

要检查点是否在圆内,请计算点与圆的中心之间的距离。如果距离大于半径,则它在圆圈外。如果半径大于距离,则它在圆圈内。

Ruby Geocoder有一种方便的方法来计算两点之间的距离。

Geocoder::Calculations.distance_between(point1, point2)

要使此返回true / false,请使用简单的比较器:

in_circle? = Geocoder::Calculations.distance_between(point1, point2) < radius

使用#distance_between阅读documentation寻求帮助。