【发布时间】:2014-01-27 20:06:17
【问题描述】:
我如何检查我的纬度/经度是否在城市范围内,例如,大伦敦被包围:
[bbox=-0.489,51.28,0.236,51.686]
来源:
http://wiki.openstreetmap.org/wiki/Bounding_Box
如何检查位置(纬度/经度):
51.55238,0.047032
已经有这方面的宝石了吗?或者最好的方法是什么?
赏金更新:
我有一个可行的解决方案,但我觉得它不是正确的,我使用的是 geocoder gem,我的用户有 geocoded_by 和 lat/long 属性。所以这就是我的做法:
def self.user_from_dublin(user_id)
near([53.349937,-6.261917], 15).pluck(:id).include?(user_id)
end
因此,这会从都柏林加载所有用户,并将用户的 id 与都柏林的用户进行比较。如果找到该 id,则认为该用户来自都柏林。
我不认为当有更多用户时这会很好用。
更新
我正在使用 postgres 数据库
【问题讨论】:
-
如果 box.lowx
-
@David 感谢您的回复。你能写一个答案吗?和/或从 bbox 值解释 box.lowx 和 box.lowy?
-
@GandalfStormCrow rubygeocoder.com 你可以使用支持基于地理编码查询的mongodb
-
@bjhaid 我可以在没有 mongodb 的情况下做到这一点,我真的需要 mongo db 吗?我的 postgres 表中已经有了纬度/经度,我需要检查的是边界框中的用户纬度/经度
-
@GandalfStormCrow 我给了
geocoder gem主页的链接,并建议使用mongodb作为替代
标签: ruby-on-rails ruby ruby-on-rails-3 postgresql