これを実現するには、 geokitおよびgeokit- railsgemを使用できます。ドキュメントについては、こちらを参照してください:https ://github.com/imajes/geokit-rails
基本的には、次のように機能します。ユーザーの住所データを保存すると、ジオコーディングサービス(GoogleマップやYahoo Placefinderなど)を使用して、その住所が検索され、空間内のポイント(lat / lng)にマッピングされます。これらのポイントは、距離などを計算するために使用できます。
例:
class User < ActiveRecord::Base
# has the following db fields:
# - city
# - state
# - country
# - latitude
# - longitude
acts_as_mappable :default_units => :miles,
:default_formula => :sphere,
:lat_column_name => :latitude,
:lng_column_name => :longitude,
:auto_geocode => {:field => :full_address}
def full_address
[city, state, country].reject(&:blank).join(', ')
end
end
次に、次のことを実行できます。
# find all users in a city (this has nothing to do with geokit but is just a normal db lookup)
User.where(:city => 'New York')
# find all users that are within X miles of a place
User.find_within(300, 'Denver')
その他にも、ドキュメントをご覧ください...
この例は、geokitgemの使用方法を示しています。この宝石はもはや活発に開発されていないようです。したがって、ジオコーダーをチェックする価値があるかもしれません:https : //github.com/alexreisner/geocoder