我有一個帶geocoder gem的rails 3應用程序。當用戶在我的網站上創建一個帳戶時,他給我他的地址。使用地理編碼器,我將他的lat和他的lng存儲在我的數據庫中,這樣我就可以將他放在Google地圖中。靠近用戶排序
當用戶進行搜索時,他必須找到最接近他的用戶。
就目前而言,我計算半徑與地理編碼器發現用戶在它:
bounds_calc = Geocoder::Calculations.bounding_box(center, radius, units: :km)
users = User.where('? < addresses.lat AND addresses.lat < ?', bounds_calc[0], bounds_calc[2]).where('? < addresses.lng AND addresses.lng < ?', bounds_calc[1], bounds_calc[3])
我想要做的是排序users
從最接近最遠。有沒有簡單的方法來做到這一點?
也許這個寶石可以幫助你:https://github.com/geokit/geokit-rails。 – JoJoS
我認爲,如果你使用User.near,結果將自動按距離排序... – sailor
你計算一個*邊界框*並選擇該框內的用戶。 – Stefan