酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Geocoder 地名から緯度経度に変換 or 緯度経度から住所変換が簡単にできるgem

地名から緯度経度を求めたり、緯度経度から住所登録をやる場合に便利なのが、この『alexreisner/geocoder』です。 ActiveRecordと組み合わると、緯度経度を登録したら後は自動で変換を行うカラムを追加できるといったことが可能になります。


Gemのインストール

いつもどおりGemfileに以下を追加して、bundle installを実行してください。

1
gem 'geocoder'

Modelにカラムを追加

モデルに緯度経度を表すカラムlatitude, longitudeを追加するマイグレーションを実行。

1
2
rails generate migration AddLatitudeAndLongitudeToModel latitude:float longitude:float address:string
rake db:migrate

Modelに緯度経度から住所に自動変換

これで、latitude, longitudeを登録すると、addressカラムを自動で取得してくれるようになります。

1
2
geocoded_by :address
after_validation :geocode, if: Proc.new { |a| a.address_changed? }

Modelに住所を登録すると緯度経度に自動変換

逆にaddressカラムを登録すると、緯度経度latitude, longitudeを取得することも可能です。

1
2
reverse_geocoded_by :latitude, :longitude
after_validation :reverse_geocode if: Proc.new { |a| a.latitude_changed? or a.longitude_changed? }

地図を表示

こちらは単に450x300のサイズのGoogle Mapを表示するURLですが、よく併用するので念の為hamlで追記。

1
= image_tag "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=16&markers=#{@location.latitude}%2C#{@location.longitude}"

Special Thanks

#273 Geocoder - RailsCasts

Ruby geocoderがすごい - もぎゃろぐ

ハッカソンハウス遊びに来ませんか?

ハッカソンハウス
クリエーターが無料で、自由に開発に集中できるスペース「Hackathon House」を作りました。 『ハッカソンハウス - カレンダー』にOPENしている日時を書いていますので、是非遊びに来てください! (場所はHPのお問い合わせからご連絡ください)

なぜ始めたのか?

僕はアメリカの有名なインキュベーション・オフィスを少しだけ訪問させて頂いたことがあります。あそこはプロダクトの可能性を目一杯引き出してくれる夢のような空間でした。僕はあんな場所を日本にも作りたいとずっと想い続けてきました。この企画を一緒にやっているくりしーさんは、『サウス・バイ・サウスウエスト』を通して、「あのワクワクする空間、熱気溢れるカオスな空間を日本でも創りたい。」というビジョンで一緒にやっています!



押さえておきたい書籍

いかがだったでしょうか?
もし説明がわかりにくかったり、間違っている場所があればぜひ一言!

Comments