trace bits and a georss class

This commit is contained in:
Steve Coast 2006-12-08 15:31:04 +00:00
parent 6559db51df
commit dd1f94e341
3 changed files with 89 additions and 1 deletions

View file

@ -38,6 +38,12 @@ class TraceController < ApplicationController
redirect_to :action => 'mine'
end
def georss
traces = Trace.find(:all, :conditions => ['public = true'], :order => 'timestamp DESC', :limit => 20)
end
def picture
trace = Trace.find(params[:id])
send_data(trace.large_picture, :filename => "#{trace.id}.gif", :type => 'image/png', :disposition => 'inline') if trace.public

View file

@ -7,7 +7,7 @@
</a>
<% end %>
</td>
<td class="<%= cl %>"><%= link_to trace.name, {:controller => 'trace', :action => 'onetrace', :id => trace.id} %>
<td class="<%= cl %>"><%= link_to trace.name, {:controller => 'trace', :action => 'view', :id => trace.id} %>
<span class="gpxsummary" title="<%= trace.timestamp %>"> ...
<% if trace.inserted %>
(<%= trace.size %> points)
@ -18,5 +18,11 @@
<%= trace.description %>
<br />
by <%= link_to trace.user.display_name, {:controller => 'trace', :action => 'list', :user => trace.user.display_name} %>
in
<% if trace.tags %>
<% trace.tags.each do |tag| %>
<%= link_to tag.tag, :controller => 'trace', :action => 'bytag', :tag => tag.tag %>
<% end %>
<% end %>
</td>
</tr>

View file

@ -11,6 +11,7 @@ module OSM
require 'time'
require 'rexml/parsers/sax2parser'
require 'rexml/text'
require 'xml/libxml'
require 'RMagick'
class Mercator
@ -61,6 +62,7 @@ module OSM
class GPXImporter
# FIXME swap REXML for libXML
attr_reader :possible_points
attr_reader :actual_points
attr_reader :tracksegs
@ -231,4 +233,78 @@ module OSM
end
end
class GeoRSS
def initialize(description='OpenStreetMap GPS Traces')
@doc = XML::Document.new
@doc.encoding = 'UTF-8'
rss = XML::Node.new 'rss'
@doc.root = rss
rss['version'] = "2.0"
rss['xmlns:geo'] = "http://www.w3.org/2003/01/geo/wgs84_pos#"
@channel = XML::Node.new 'channel'
rss << @channel
title = XML::Node.new 'title'
title << 'OpenStreetMap GPS Traces'
@channel << title
description_el = XML::Node.new 'description'
@channel << description_el
description_el << description
link = XML::Node.new 'link'
link << 'http://www.openstreetmap.org/traces/'
@channel << link
image = XML::Node.new 'image'
@channel << image
url = XML::Node.new 'url'
url << 'http://www.openstreetmap.org/feeds/mag_map-rss2.0.png'
image << url
title = XML::Node.new 'title'
title << "OpenStreetMap"
image << title
width = XML::Node.new 'width'
width << '100'
image << width
height = XML::Node.new 'height'
height << '100'
image << height
link = XML::Node.new 'link'
link << 'http://www.openstreetmap.org/traces/'
image << link
end
def add(latitude=0, longitude=0, title_text='dummy title', url='http://www.example.com/', description_text='dummy description', timestamp=Time.now)
item = XML::Node.new 'item'
title = XML::Node.new 'title'
item << title
title << title_text
link = XML::Node.new 'link'
link << url
item << link
description = XML::Node.new 'description'
description << description_text
item << description
pubDate = XML::Node.new 'pubDate'
pubDate << timestamp.xmlschema
item << pubDate
lat_el = XML::Node.new 'geo:lat'
lat_el << latitude.to_s
item << lat_el
lon_el = XML::Node.new 'geo:lon'
lon_el << longitude.to_s
item << lat_el
@channel << item
end
def to_s
return @doc.to_s
end
end
end