google map apiをrubyで使う方法を探していました。
すると、Geocoderというgemを使うと、モデル内で緯度経度を取得できることが分かりました。
この方法が便利だったので共有します。
##使い方
Gemfile
gem 'geocoder'
latitude
とlongitude
を持つstore
を例に説明を進めます。
bundle exec rails g model store latitude:float longitude:float
app/model/store.rb
geocoded_by :address, :latitude, :longitude
before_validation :geocode
def address
"福岡市中央区天神"
end
上記の設定で@store.valid?
や@store.save
などを呼ぶと、latitude
とlongitude
にaddress
の緯度と経度が入ります。
##緯度経度に別のカラム名を使いたい場合
lat
とlng
を持つstore
を例に説明を進めます。
bundle exec rails g model store lat:float lng:float
app/model/store.rb
geocoded_by :address, latitude: :lat, longitude: :lng
上記のように記述することで、緯度と経度の代入先を指定できます。
以上です。
おかしいところがあれば指摘していただけると嬉しいです。
http://www.rubygeocoder.com/
https://github.com/alexreisner/geocoder