またリアルな例をひとつ。
「サイトリニューアルにあたって、霊園の地図を載せたい。」
霊園データは数百。手作業ではちょっと無理。そこでGeocoding.jpのAPI(というかGoogleマップ)を使って住所から経度・緯度の座標に変換することに。
require 'open-uri'
require 'cgi'
require 'rubygems'
require 'hpricot'
class Geo
def self.lookup(address)
doc = Hpricot(open("http://www.geocoding.jp/api/?v=1.1&q=#{CGI.escape(address)}"))
{:lat => doc.at("lat").inner_text.to_f, :lng => doc.at("lng").inner_text.to_f}
end
end
「5秒に1回ぐらいにしてください」と書いてあるので回す場合はsleep 5とか入れてください。
% irb --simple-prompt -r geo
>> Geo.lookup "東京都港区芝公園4-2-8"
=> {:lat=>35.658634, :lng=>139.745411}
かなりいい加減な住所でもGoogleマップがいい感じに取ってくれました。(大体8割ぐらい?)
「だから霊園ってなんだよ!」というのはスルーで。