More Related Content
Similar to Macbook Pro Mashup APIs Google Maps Onsen Rails
Similar to Macbook Pro Mashup APIs Google Maps Onsen Rails (20)
More from Yuichiro MASUI (13)
Macbook Pro Mashup APIs Google Maps Onsen Rails
- 77. require 'net/http'
require 'cgi'
require 'rexml/document'
class Onsen
attr_accessor :address, :name, :id
KEY = 'phe11375af71ba'
URL = 'http://jws.jalan.net/APICommon/OnsenSearch/V1/?'
def self.find(params)
results = []
get(params).elements.each('Results/Onsen') do |el|
results << Onsen.new(el.elements[quot;OnsenIDquot;].text, el.elements[quot;OnsenNamequot;].text,
el.elements[quot;OnsenAddressquot;].text)
end
results
end
def self.url(params)
params[:key] = KEY
URI.parse(URL+((params.map { |key,value| quot;#{key}=#{CGI::escape(value.to_s)}quot;}).join('&')))
end
def self.get(params)
REXML::Document.new(Net::HTTP.get(url(params)))
end
def initialize(id, name, address)
@id, @name, @address = id, name, address
end
end
- 82. irb> puts Onsen.find(:count => 10, :pref =>
'170000').map{|o| o.name}.join(',')
=> , , , , , ,
, , , ( )
- 87. $ rails onsen -d sqlite3
$ cd onsen
$ script/plugin install
svn://rubyforge.org/var/svn/ym4r/Plugins/GM/trunk/ym4r_gm
$ ./script/generate controller onsen index
- 89. class OnsenController < ApplicationController
def index
@map = GMap.new(quot;map_divquot;)
@map.control_init :large_map => true, :map_type => true
@map.center_zoom_init([37.60988,138.872681], 10)
end
end
- 101. irb> nigata = Geocoding.get(‘ ’)
irb> nigata.first.latlon
=> [37.912016, 139.061847]
- 106. class Onsen
def latlon
Geocoding.get(@address.gsub(/(
| | ).{1,5} /,'¥¥1')).first.latlon
end
end
- 109. class OnsenController < ApplicationController
def index
@map = GMap.new(quot;map_divquot;)
@map.control_init(:large_map => true, :map_type => true)
@map.center_zoom_init([37.60988,138.872681], 8)
return
Onsen.find(:count => 30, :pref => '170000').each do |o|
begin
marker = GMarker.new(
o.latlon, :title => o.name,
:info_window => render_to_string( :partial =>
'point', :locals => { :onsen => o })
)
@map.overlay_init(marker)
rescue
end
end
end
- 131. class Onsen
def photo
Onsen.get({
:appid=>'onsen',
:query=>@name.gsub(/ ¥(.*/,''),
:results => 1},
quot;http://api.searc........rch?quot;
).elements['/ResultSet/Result/Thumbnail/
Url'].text
end
end