핸드폰 위치 매핑된 마커
sudo apt-get install rubygems ruby1.8-dev sudo gem install sinatra data_mapper dm-sqlite-adapter do_sqlite3
ruby ballon.rb
ballon.rb
require 'rubygems' require 'sinatra' require 'data_mapper' DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/location.db") class Location include DataMapper::Resource property :id, Serial property :latitude, String property :longitude, String property :created_at, DateTime end DataMapper.finalize Location.auto_upgrade! post '/' do html = "lat,lng: #{params[:latitude]}, #{params[:longitude]}" ballon = Location.new(:latitude => params[:latitude], :longitude => params[:longitude]) ballon.save return html end get '/' do html = '<?xml version="1.0"?><markers>' ballon = Location.all(:order => [ :id.desc ]) ballon.each do | g | html+="<marker><lat>#{g.latitude}</lat><lng>#{g.longitude}</lng></marker>" end html+= '</markers>' return html end get '/map' do erb :map end
views/map.erb
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map_canvas { height: 100% } </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> </script> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"> </script> <script type="text/javascript"> var map; var myOptions; placeMarkers = function(filename) { $.get(filename, function(xml){ $(xml).find("marker").each(function(){ var lat = $(this).find('lat').text(); var lng = $(this).find('lng').text(); var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng)); var marker = new google.maps.Marker({ position: point, map: map }); marker.setMap(map); }); }); } function initialize() { var latLng = new google.maps.LatLng(37.556, 126.902); myOptions = { center: latLng, zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } $(document).ready(function() { initialize(); placeMarkers('/'); }); </script> </head> <body> <div id="map_canvas" style="width:100%; height:100%"></div> </body> </html>