我已经使用 geo Near 查询有一段时间了,但我似乎无法弄清楚如何将结果限制在某个半径内。例如,如何在此查询中将搜索限制在 20 英里以内?

Place.near(:coordinates => location.reverse)
# must reverse the resulting coordinates array because mongo stores them backwards [lng,lat]

最佳答案

南北纬差一个弧度的长度,在任何纬度大约是 60海里、111公里或69法定英里;你可以阅读更多关于 here in wikipedia 或在 mongo 地理空间页面 The Earth is Round but Maps are Flat

分别使用英里或公里时,将距离除以 69 或 111,所以现在您可以这样查询

Place.where(:coordinates => {"$near" => location.reverse , '$maxDistance' => 20.fdiv(69)})

关于ruby-on-rails - 使用 Mongoid 的 Model.near 方法的最大距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7848634/

10-09 04:42