| 1 | # -*- coding: utf-8 -*- |
|---|
| 2 | # |
|---|
| 3 | # yahoo_map.rb - embeded Yahoo! JAPAN Map for tDiary |
|---|
| 4 | # |
|---|
| 5 | # Copyright (C) 2010, KAYA Satoshi <kayakaya@kayakaya.net> |
|---|
| 6 | # You can redistribute it and/or modify it under GPL2. |
|---|
| 7 | # |
|---|
| 8 | |
|---|
| 9 | add_header_proc do |
|---|
| 10 | init_ymap |
|---|
| 11 | r = '' |
|---|
| 12 | if @conf['yahoo_jp.appid'] and @conf['yahoo_jp.appid'].size > 0 |
|---|
| 13 | r << %Q|<script type="text/javascript"| |
|---|
| 14 | r << %Q| src="http://map.yahooapis.jp/MapsService/js/V2/?appid=#{h @conf['yahoo_jp.appid']}"></script>| |
|---|
| 15 | end |
|---|
| 16 | return r |
|---|
| 17 | end |
|---|
| 18 | |
|---|
| 19 | add_conf_proc( 'yahoo_jp_appid', 'Yahoo! JAPAN Application ID' ) do |
|---|
| 20 | if @mode == 'saveconf' then |
|---|
| 21 | @conf['yahoo_jp.appid'] = @cgi.params['yahoo_jp.appid'][0] |
|---|
| 22 | end |
|---|
| 23 | |
|---|
| 24 | <<-HTML |
|---|
| 25 | <h3 class="subtitle">Yahoo! JAPAN Application ID</h3> |
|---|
| 26 | <p><input name="yahoo_jp.appid" value="#{h @conf['yahoo_jp.appid']}" size="70"></p> |
|---|
| 27 | <p><a href="http://e.developer.yahoo.co.jp/webservices/register_application">Get Application id</a></p> |
|---|
| 28 | HTML |
|---|
| 29 | end |
|---|
| 30 | |
|---|
| 31 | add_footer_proc do |date| |
|---|
| 32 | insert_ymap_js |
|---|
| 33 | end |
|---|
| 34 | |
|---|
| 35 | def init_ymap |
|---|
| 36 | @ymap_container = Array.new |
|---|
| 37 | end |
|---|
| 38 | |
|---|
| 39 | def generate_ymapid(lat, lon, layer) |
|---|
| 40 | ymapid = 'ymapid' << lat.to_s << lon.to_s << layer.to_s |
|---|
| 41 | ymapid.delete('.') |
|---|
| 42 | end |
|---|
| 43 | |
|---|
| 44 | def yahoo_map(lat, lon, options = {}) |
|---|
| 45 | options[:layer] ||= 3 |
|---|
| 46 | options[:size] ||= 'medium' |
|---|
| 47 | |
|---|
| 48 | if feed? or @conf.mobile_agent? then |
|---|
| 49 | return %Q|<p><a href="http://map.yahoo.co.jp/pl?type=scroll&lat=#{lat}&lon=#{lon}&z=17&mode=map&pointer=on&datum=wgs&fa=ks&home=on&hlat=#{lat}&hlon=#{lon}&layout=&ei=utf-8&p=">Link to Yahoo! JAPAN Map </a></p>| |
|---|
| 50 | end |
|---|
| 51 | |
|---|
| 52 | # define map size |
|---|
| 53 | height = {'iphone' => '240px', 'small'=> '240px', 'medium' => '360px', 'large' => '480px'} |
|---|
| 54 | width = {'iphone' => '240px', 'small' => '320px', 'medium' => '480px', 'large' => '640px'} |
|---|
| 55 | if @conf.iphone? then |
|---|
| 56 | size = 'iphone' |
|---|
| 57 | else |
|---|
| 58 | size = options[:size] |
|---|
| 59 | end |
|---|
| 60 | |
|---|
| 61 | ymapid = generate_ymapid(lat, lon, options[:layer]) |
|---|
| 62 | ymap_info = {:ymapid => ymapid, :lat => lat, :lon => lon, :layer => options[:layer]} |
|---|
| 63 | |
|---|
| 64 | @ymap_container << ymap_info |
|---|
| 65 | |
|---|
| 66 | %Q|<div class="ymap" id="#{ymapid}" style="width:#{width[size]}; height:#{height[size]}"></div>| |
|---|
| 67 | end |
|---|
| 68 | |
|---|
| 69 | def insert_ymap_js |
|---|
| 70 | r = '' |
|---|
| 71 | if @ymap_container.size > 0 then |
|---|
| 72 | unless feed? then |
|---|
| 73 | r << %Q|<script type="text/javascript">\n| |
|---|
| 74 | r << %Q|function defineYmapIds() {\n| |
|---|
| 75 | @ymap_container.each do |ymap_info| |
|---|
| 76 | r << %Q| var obj#{ymap_info[:ymapid]} = new YahooMapsCtrl("#{ymap_info[:ymapid]}", "#{ymap_info[:lat]}, #{ymap_info[:lon]}", #{ymap_info[:layer]}, YMapMode.MAP, YDatumType.WGS84);\n| |
|---|
| 77 | end |
|---|
| 78 | r << %Q|}\n| |
|---|
| 79 | r << %Q|if (window.addEventListener) window.addEventListener("load", defineYmapIds, false); // for DOM level 2 compliant Web browsers\n| |
|---|
| 80 | r << %Q|else if (window.attachEvent) window.attachEvent("onload", defineYmapIds); // for IE\n| |
|---|
| 81 | r << %Q|</script>| |
|---|
| 82 | #else |
|---|
| 83 | # return |
|---|
| 84 | end |
|---|
| 85 | end |
|---|
| 86 | return r |
|---|
| 87 | end |
|---|
| 88 | # Local Variables: |
|---|
| 89 | # mode: ruby |
|---|
| 90 | # indent-tabs-mode: t |
|---|
| 91 | # tab-width: 3 |
|---|
| 92 | # ruby-indent-level: 3 |
|---|
| 93 | # End: |
|---|
| 94 | # vim: ts=3 |
|---|