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?