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

psh*_*rma 4 google-maps geocoding ruby-on-rails ruby-on-rails-3 gmaps4rails

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

@circles_json = '[
 {"lng": -122.214897, "lat": 37.772323, "radius": 1000000},
]
Run Code Online (Sandbox Code Playgroud)

"

这有助于我创建圆圈.但是,如何让我们看看"位置B"是否在里面@circles_json

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

任何指导表示赞赏.

谢谢

Sub*_*ial 8

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

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

Geocoder::Calculations.distance_between(point1, point2)
Run Code Online (Sandbox Code Playgroud)

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

in_circle? = Geocoder::Calculations.distance_between(point1, point2) < radius
Run Code Online (Sandbox Code Playgroud)

阅读文档以获取帮助#distance_between.