root/platform/tdiary/plugin/image_gps.rb @ 33597

Revision 33597, 3.7 kB (checked in by kp, 5 years ago)

ちょっと修正

Line 
1# image_gps.rb $Revision: 1.6 $
2#
3# 概要:
4# 画像にGPSによる位置情報が含まれている場合は、対応する地図へのリンクを生成する。
5#
6# 使い方:
7# 絵日記Plugin(image.rb)とおなじ
8#
9# Copyright (c) 2004,2005 kp <kp@mmho.no-ip.org>
10# Distributed under the GPL
11#
12
13=begin ChangeLog
142009-05-26 kp
15  * walk.eznavi.jpの場合のクエリを修正
16  * リンク先をgoogle mapに
17  * wgs2tkyを使用しない
182008-05-22 kp
19  * MapDatumがTOKYO以外の場合、WGS-84と類推する
202008-01-17 kp
21  * いろいろ変更
222006-03-28 kp
23  * cooperation with ALPSLAB clip
242006-03-27 kp
25  * use exifparser
262005-07-25 kp
27  * correct link url when access with mobile.
282005-07-19 kp
29  * MapDatum macth to WGS84
302005-05-25 kp
31  * correct url link to mapion.
322005-05-24 kp
33  * create link to http://walk.eznavi.jp when access with mobile.
342004-11-30 kp
35  * first version
36=end
37
38require 'wgs2tky'
39require 'exifparser'
40
41def tky2wgs lat,lon
42  lat_w = lat - lat*0.00010695 + lon*0.000017464 + 0.0046017
43  lon_w = lon - lat*0.000046038 - lon*0.000083043 + 0.010040
44  lat = lat_w
45  lon = lon_w
46  return lat,lon
47end
48
49def image( id, alt = 'image', thumbnail = nil, size = nil, place = 'photo' )
50  if @conf.secure then
51    image = "#{@image_date}_#{id}.jpg"
52    image_t = "#{@image_date}_#{thumbnail}.jpg" if thumbnail
53  else
54    image = image_list( @image_date )[id.to_i]
55    image_t = image_list( @image_date )[thumbnail.to_i] if thumbnail
56  end
57  if size then
58    if size.kind_of?(Array)
59      size = " width=\"#{size[0]}\" height=\"#{size[1]}\""
60     
61    else
62      size = " width=\"#{size.to_i}\""
63    end
64  else
65    size = ""
66  end
67 
68  eznavi = 'http://walk.eznavi.jp'
69  mapion = 'http://www.mapion.co.jp'
70  google = 'http://maps.google.co.jp'
71
72  exif = ExifParser.new("#{@image_dir}/#{image}".untaint) rescue nil
73 
74  el = nil
75  nl = nil
76  datum = nil
77
78  alt_org = alt
79  if exif
80    if @conf['image_gps.add_info']
81      alt += ' '+exif['Model'].to_s if exif.tag?('Model')
82      alt += ' '+exif['FocalLength'].to_s if exif.tag?('FocalLength')
83      alt += ' '+exif['ExposureTime'].to_s if exif.tag?('ExposureTime')
84      alt += ' '+exif['FNumber'].to_s if exif.tag?('FNumber')
85    end
86    begin
87      lat = exif['GPSLatitude'].value
88      lat = lat[0].to_f + lat[1].to_f/60 + lat[2].to_f/3600
89      lat = -lat if exif['GPSLatitudeRef'].value == 'S'
90      lon = exif['GPSLongitude'].value
91      lon = lon[0].to_f + lon[1].to_f/60 + lon[2].to_f/3600
92      lon = -lon if exif['GPSLongitudeRef'].value == 'W'
93      datum = exif['GPSMapDatum'].value if exif.tag?('GPSMapDatum')
94    rescue
95      lat = nil
96    end
97  end
98
99  unless lat.nil? && @conf.mobile_agent?
100    lat,lon = tky2wgs(lat,lon) if datum == 'TOKYO'
101  end
102
103  if thumbnail
104    url = %Q[<a href="#{@image_url}/#{image}"><img class="#{place}" src="#{@image_url}/#{image_t}" alt="#{alt}" title="#{alt}"#{size}></a>]
105  elsif lat.nil?
106    url = %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}"#{size}>]
107  else
108    if @conf.mobile_agent?
109      url = %Q[<a href="#{eznavi}/map?datum=#{datum=='TOKYO'?'1':'0'}&amp;unit=0&amp;lat=+#{lat}&amp;lon=+#{lon}">]
110    else
111      url = %Q[<a href="#{google}/maps?q=#{lat},#{lon}">]
112    end
113    url += %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}" #{size}></a>]
114  end
115  url
116end
117
118add_conf_proc('image_gps','image_gpsの設定','etc') do
119  if @mode == 'saveconf' then
120    @conf['image_gps.add_info'] = @cgi.params['image_gps.add_info'][0]
121  end
122 
123  <<-HTML
124    <p>
125    <h3>撮影条件の表示</h3>
126    <input type="checkbox" name="image_gps.add_info" value="true" #{if @conf['image_gps.add_info'] then " checked" end}>タイトルに撮影条件を追加する</p>
127  HTML
128
129end
Note: See TracBrowser for help on using the browser.