RailsとJQueryでGoogleMapを住所から扱う手軽な方法
GoogleMapをRails3アプリで使いたかった。
昔、どうやってたっけなー、と思って手元のコード参考にかいてもうまく動いてくれなかった。
なんかしばらくのうちにv3とか云々って話になってるので、いい機会なので書きなおしてみた。
Rails:3.1.1
◆JS
プラグインは以下を用いた。
jQuery GoogleMaps プラグイン
GitHub - dreamseeker/jQueryGoogleMaps: Google Maps API v3 を利用するための jQuery Plugin です。
◆View
layouts
<script type="text/javascript" src="http://www.google.com/jsapi"> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&key=[key]"> <%= javascript_include_tag 'jquery.GoogleMaps1.01' %>
view/
<script type="text/javascript" charset="utf-8"> $(function(){ //GMap $('#gmap').GoogleMaps({ lat: <%= @geo['lat'] %>, lng: <%= @geo['lng'] %>, zoom: 15 }); }); </script> <!-- マップ --> <div id="gmap"></div>
◆Contoroller
controller/
@geo = geocode(@spot_info.address)
common/
def geocode(address) address = URI.encode(address) hash = Hash.new baseUrl = "http://maps.google.com/maps/api/geocode/json" reqUrl = "#{baseUrl}?address=#{address}&sensor=false&language=ja" response = Net::HTTP.get_response(URI.parse(reqUrl)) status = JSON.parse(response.body) if status['status'] != "ZERO_RESULTS" hash['lat'] = status['results'][0]['geometry']['location']['lat'] hash['lng'] = status['results'][0]['geometry']['location']['lng'] else hash['lat'] = '35.681382' hash['lng'] = '139.766084' end return hash end