X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/11cc4a5e601dd288d601e6e35a72d159062f18b5..8ff838ae457598fb5828b65948e1b55d21759b06:/app/controllers/api/tracepoints_controller.rb diff --git a/app/controllers/api/tracepoints_controller.rb b/app/controllers/api/tracepoints_controller.rb index 5fbece05b..b2d755fe6 100644 --- a/app/controllers/api/tracepoints_controller.rb +++ b/app/controllers/api/tracepoints_controller.rb @@ -33,7 +33,7 @@ module Api # get all the points ordered_points = Tracepoint.bbox(bbox).joins(:trace).where(:gpx_files => { :visibility => %w[trackable identifiable] }).order("gpx_id DESC, trackid ASC, timestamp ASC") unordered_points = Tracepoint.bbox(bbox).joins(:trace).where(:gpx_files => { :visibility => %w[public private] }).order("gps_points.latitude", "gps_points.longitude", "gps_points.timestamp") - points = ordered_points.union_all(unordered_points).offset(offset).limit(Settings.tracepoints_per_page) + points = ordered_points.union_all(unordered_points).offset(offset).limit(Settings.tracepoints_per_page).preload(:trace) doc = XML::Document.new doc.encoding = XML::Encoding::UTF_8 @@ -53,24 +53,22 @@ module Api trkseg = nil anon_track = nil anon_trkseg = nil - gpx_file = nil timestamps = false points.each do |point| if gpx_id != point.gpx_id gpx_id = point.gpx_id trackid = -1 - gpx_file = Trace.find(gpx_id) - if gpx_file.trackable? + if point.trace.trackable? track = XML::Node.new "trk" doc.root << track timestamps = true - if gpx_file.identifiable? - track << (XML::Node.new("name") << gpx_file.name) - track << (XML::Node.new("desc") << gpx_file.description) - track << (XML::Node.new("url") << url_for(:controller => "/traces", :action => "show", :display_name => gpx_file.user.display_name, :id => gpx_file.id)) + if point.trace.identifiable? + track << (XML::Node.new("name") << point.trace.name) + track << (XML::Node.new("desc") << point.trace.description) + track << (XML::Node.new("url") << url_for(:controller => "/traces", :action => "show", :display_name => point.trace.user.display_name, :id => point.trace.id)) end else # use the anonymous track segment if the user hasn't allowed @@ -85,7 +83,7 @@ module Api end if trackid != point.trackid - if gpx_file.trackable? + if point.trace.trackable? trkseg = XML::Node.new "trkseg" track << trkseg trackid = point.trackid @@ -98,7 +96,7 @@ module Api end end - trkseg << point.to_xml_node(timestamps) + trkseg << point.to_xml_node(:print_timestamp => timestamps) end response.headers["Content-Disposition"] = "attachment; filename=\"tracks.gpx\""