1 # frozen_string_literal: true
 
   5 xml.gpx("version" => "1.0",
 
   6         "creator" => "OpenStreetMap.org",
 
   7         "xmlns" => "http://www.topografix.com/GPX/1/0") do
 
   8   # initialise these variables outside of the loop so that they
 
   9   # stay in scope and don't get free'd up by the GC during the
 
  19   @points.each do |point|
 
  20     if gpx_id != point.gpx_id
 
  24       if point.trace.trackable?
 
  29         if point.trace.identifiable?
 
  30           track["name"] = point.trace.name
 
  31           track["desc"] = point.trace.description
 
  32           track["url"] = url_for(:controller => "/traces", :action => "show", :display_name => point.trace.user.display_name, :id => point.trace.id)
 
  35         # use the anonymous track segment if the user hasn't allowed
 
  36         # their GPX points to be tracked.
 
  39           anon_track["trksegs"] = []
 
  46     if trackid != point.trackid
 
  47       if point.trace.trackable?
 
  49         track["trksegs"] << trkseg
 
  50         trackid = point.trackid
 
  54           anon_track["trksegs"] << anon_trkseg
 
  70       trk["trksegs"].each do |trksg|
 
  72           trksg.each do |tracepoint|
 
  73             xml.trkpt("lat" => tracepoint.lat.to_s, "lon" => tracepoint.lon.to_s) do
 
  74               xml.time tracepoint.timestamp.xmlschema if tracepoint.trace.trackable?