我正在使用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米。
感谢任何指导。
由于
答案 0 :(得分:7)
要检查点是否在圆内,请计算点与圆的中心之间的距离。如果距离大于半径,则它在圆圈外。如果半径大于距离,则它在圆圈内。
Ruby Geocoder有一种方便的方法来计算两点之间的距离。
Geocoder::Calculations.distance_between(point1, point2)
要使此返回true / false,请使用简单的比较器:
in_circle? = Geocoder::Calculations.distance_between(point1, point2) < radius
使用#distance_between
阅读documentation寻求帮助。