geocoder gem を使用した Rails 3 アプリケーションがあります。ユーザーが私のウェブサイトでアカウントを作成すると、彼は私に自分のアドレスを教えてくれます。ジオコーダーを使用して、彼の緯度と経度をデータベースに保存し、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
から最も遠いものへとソートすることです。それを行う簡単な方法はありますか?