- 2007-12-31 (Mon) 18:28
- Ruby On Rails , googlemap
4travelにパラメータとして地名を送信するには、返されたXMLの中から地名だけを取りだす必要がある。難しいことはしないけどRubyでXMLをいじった経験はなし。きっとそういうライブラリがあるはず、と思って探すとREXMLというものを発見。日本語情報が少なくここを参考になんとかやってみた。
どうもREXMLの日本語情報が少ないようで、これ以上調べるのも時間がかかりそうな気がしたので、見よう見まねでかなり強引に作ってみた。きっともっとスマートな方法があるはず。main_controller.rbにget_name_of_placeというメソッドを追加し、そこにXMLのデータを渡すと都道府県名と都市名を別々にようにした。取得失敗時は取得失敗という文字を返す。
main_controller.rb
require 'net/http'
require 'rexml/document'
class MainController < ApplicationController
def index
end
def search
#HTTP通信設定
site = Net::HTTP.start('refits.cgk.affrc.go.jp')
#地名情報取得
response = site.get("/tsrv/jp/rgeocode.php?lon=#{params[:x]}&lat=#{params[:y]}")
resXML = response.body
site.finish
#XML要素から都道府県名と都市名を取得する
pref, munic = get_name_of_place(resXML)
#画面表示用のテキスト整形
@resText = "都道府県名:#{pref} 都市名:#{munic}"
render(:layout => false)
end
def get_name_of_place xml
#XMLツリー作成
docTree = REXML::Document.new xml
#ステータス取得(地名の取得が成功したかどうか)
status = docTree.elements.each("/rgeocode/status"){}[0].text
return "取得失敗", "取得失敗" if status != "true"
#都道府県取得
pref = docTree.elements.each("/rgeocode/prefecture/pname"){}[0].text
#都市名取得
munic = docTree.elements.each("/rgeocode/municipality/mname"){}[0].text
return pref, munic
end
end
今回もサーバサイドのみの変更なのでそのまま地図をクリック。よし、成功!僕の住んでる近辺を狙って何度かクリックするものの、なかなか難しい。よし、面白くなってきたぞ。

関連するエントリー GoogleMapでマッシュアップの練習 (Rails編) #5
トラックバック:No Trackbacks
- トラックバック URL
- http://blog.garden-place.jp/action.php?action=plugin&name=TrackBack&tb_id=19
- Listed below are links to weblogs that reference
- GoogleMapでマッシュアップの練習(Rails編) #5 from Web 酒 肴
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。
もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.