Changeset 190
- Timestamp:
- 03/13/06 08:21:41 (3 years ago)
- Files:
-
- Mapper/trunk/Mapper.pl (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Mapper/trunk/Mapper.pl
r189 r190 18 18 19 19 sub BEGIN { 20 $VERSION = '0. 03';20 $VERSION = '0.10.$Rev$'; 21 21 my $plugin = MT::Plugin::Mapper->new({ 22 22 name => 'Mapper', … … 90 90 sub generate { 91 91 my $this = shift; 92 my($address) = @_; 93 $address =~ s/(^\s+|\s+$)//g; 94 my ($lat, $lon) = eval { $this->resolve_address($address) }; 95 return "<div class=\"adr\">$address (Sorry, this address cannot be resolved.)</div>" if $@; 92 my($s) = @_; 93 my($adr, $opt) = split(/:/, $s); 94 $adr =~ s/^\s+//; 95 $adr =~ s/\s+$//; 96 my ($lat, $lon); 97 if ($adr =~ m!^x([-.\d]+)y([-.\d]+)$!) { # map:x<lon>y<lat> 98 ($lat, $lon) = ($2, $1); 99 } elsif ($adr =~ m!^([-.\d]+),\s*([-.\d]+)$!) { # map:<lat>,<lon> 100 ($lat, $lon) = ($1, $2); 101 } else { 102 ($lat, $lon) = eval { $this->resolve_address($adr) }; 103 return "<div class=\"adr\">$adr (Sorry, this address cannot be resolved.)</div>" if $@; 104 } 96 105 my $res = ''; 97 106 $res .= $this->preamble unless $this->{count}; 98 $res .= $this->body($lat, $lon, $ad dress);107 $res .= $this->body($lat, $lon, $adr); 99 108 $this->{count}++; 100 109 $res; … … 103 112 sub resolve_address { 104 113 my $this = shift; 105 my($ad dress) = @_;114 my($adr) = @_; 106 115 my $geo_url = $this->{language} eq 'ja' ? 107 116 'http://maps.google.co.jp/maps?q=' : 'http://maps.google.com/maps?q='; 108 $geo_url .= encode_url($ad dress) . '&output=kml';117 $geo_url .= encode_url($adr) . '&output=kml'; 109 118 $geo_url .= '&ie=' . $this->{charset} . '&oe=' . $this->{charset}; 110 119 my $res = get($geo_url); 111 if ($res && $res =~ /coordinates>([ 0-9.]+),([0-9.]+),/is) {120 if ($res && $res =~ /coordinates>([-.\d]+),([-.\d]+),/is) { 112 121 return ($2, $1); 113 122 } else { … … 117 126 118 127 my $preamble_tmpl = <<'EOT'; 119 <script type="text/javascript" src="http://maps.google.com/maps?<TMPL_IF NAME="language">hl=<TMPL_VAR NAME="language">&</TMPL_IF>file=api&v= 2&key=<TMPL_VAR NAME="google_maps_key">" charset="utf-8"></script>128 <script type="text/javascript" src="http://maps.google.com/maps?<TMPL_IF NAME="language">hl=<TMPL_VAR NAME="language">&</TMPL_IF>file=api&v=1&key=<TMPL_VAR NAME="google_maps_key">" charset="utf-8"></script> 120 129 <script type="text/javascript"> 121 130 //<![CDATA[ … … 178 187 sub body { 179 188 my $this = shift; 180 my($lat, $lon, $address) = @_; 181 ($address) = split(/:/, $address); 189 my($lat, $lon, $adr) = @_; 182 190 my $tmpl = HTML::Template->new(scalarref => \$body_tmpl); 183 191 $tmpl->param( … … 187 195 latitude => $lat, 188 196 longitude => $lon, 189 address => $ad dress,197 address => $adr, 190 198 maptype => $this->{maptype} || 'G_MAP_TYPE', 191 199 zoom => (defined $this->{zoom}) ? $this->{zoom} : 4 … … 212 220 sub generate { 213 221 my $this = shift; 214 my($address) = @_; 215 $address =~ s/(^\s+|\s+$)//g; 216 my($adr, $opt) = split(/:/, $address); 217 $adr = MT::I18N::encode_text($adr, '', 'euc-jp') || ''; 222 my($s) = @_; 223 $s =~ s/^\s+//; 224 $s =~ s/\s+$//; 225 my($str, $opt) = split(/:/, $s); 226 227 my $pos = ''; 228 if ($str =~ m!^x([-.\d]+)y([-.\d]+)$!) { # map:x<lon>y<lat> 229 $pos = "$2,$1"; 230 } elsif ($str =~ m!^([-.\d]+),\s*([-.\d]+)$!) { # map:<lat>,<lon> 231 $pos = $str; 232 } 233 if ($pos) { 234 return qq[<p><a target="_blank" href="http://clip.alpslab.jp/bin/rd?pos=$pos"><img class="alpslab-clip" src="http://clip.alpslab.jp/bin/map?pos=$pos&opt=$opt" alt="$str" title="$str" /></a></p>]; 235 } 236 237 my $adr = MT::I18N::encode_text($str, '', 'euc-jp') || ''; 218 238 $adr = MT::Util::encode_url($adr); 219 qq[<p><a target="_blank" href="http://clip.alpslab.jp/bin/rd?adr=$adr"><img class="alpslab-clip" src="http://clip.alpslab.jp/bin/map?adr=$adr&opt=$opt" alt="$ address" title="$address" /></a></p>];220 } 239 qq[<p><a target="_blank" href="http://clip.alpslab.jp/bin/rd?adr=$adr"><img class="alpslab-clip" src="http://clip.alpslab.jp/bin/map?adr=$adr&opt=$opt" alt="$str" title="$str" /></a></p>]; 240 }
