またリアルな例をひとつ。

「サイトリニューアルにあたって、霊園の地図を載せたい。」

霊園データは数百。手作業ではちょっと無理。そこで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割ぐらい?)

「だから霊園ってなんだよ!」というのはスルーで。

Comments


Option