- # integerise
- min_lat = min_lat * 1000000
- max_lat = max_lat * 1000000
- min_lon = min_lon * 1000000
- max_lon = max_lon * 1000000
- # get all the points
- points = Tracepoint.find(:all, :conditions => ['gps_points.latitude > ? AND gps_points.longitude > ? AND gps_points.latitude < ? AND gps_points.longitude < ? AND ( public = 1 OR gpx_files.user_id = ? ) AND visible = 1', min_lat.to_i, min_lon.to_i, max_lat.to_i, max_lon.to_i, @user.id ], :select => "gps_points.*", :joins => "INNER JOIN gpx_files ON gpx_files.id = gpx_id", :offset => offset, :limit => TRACEPOINTS_PER_PAGE, :order => "timestamp DESC" )
-
- doc = XML::Document.new
- doc.encoding = 'UTF-8'
- root = XML::Node.new 'gpx'
- root['version'] = '1.0'
- root['creator'] = 'OpenStreetMap.org'
- root['xmlns'] = "http://www.topografix.com/GPX/1/0/"
-
- doc.root = root
-
- track = XML::Node.new 'trk'
- doc.root << track
-
- trkseg = XML::Node.new 'trkseg'
- track << trkseg
-
- points.each do |point|
- trkseg << point.to_xml_node()
- end
-
- #exit when we have too many requests
- if @@count > MAX_COUNT
- render :text => doc.to_s
- @@count = COUNT
- exit!
- end
-
- render :text => doc.to_s