4

我正在使用 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 geocoderhttp://www.rubygeocoder.com/。如果是这样,我该怎么做?我看了railscasts。但这主要取决于本地数据库。我正在寻找的是查看在我的数据库中输入的两个位置是否彼此靠近。在这种情况下,半径为 50M。

任何指导表示赞赏。

谢谢

4

1 回答 1

9

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

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

Geocoder::Calculations.distance_between(point1, point2)

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

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

阅读文档以获取使用#distance_between.

于 2013-05-19T07:17:58.547 回答