]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5233'
authorTom Hughes <tom@compton.nu>
Sat, 15 Feb 2025 15:22:36 +0000 (15:22 +0000)
committerTom Hughes <tom@compton.nu>
Sat, 15 Feb 2025 15:22:36 +0000 (15:22 +0000)
1  2 
lib/gpx.rb

diff --combined lib/gpx.rb
index 45a4dcf5fc0bd62335ea0339409e2c1fbfd49e6d,021971c363a8aaa37a50eaa26fd32b92fc0a512d..921dce12cf51c557c8f41f3530de61f87a8a33ca
@@@ -27,10 -27,12 +27,12 @@@ module GP
              point.timestamp = Time.parse(reader.read_string).utc
            end
          when XML::Reader::TYPE_END_ELEMENT
 -          if reader.name == "trkpt" && point && point.valid?
 +          if reader.name == "trkpt" && point&.valid?
              point.altitude ||= 0
              yield point
              @actual_points += 1
+             @lats << point.latitude
+             @lons << point.longitude
            elsif reader.name == "trkseg"
              @tracksegs += 1
            end
@@@ -44,6 -46,8 +46,8 @@@
        @possible_points = 0
        @actual_points = 0
        @tracksegs = 0
+       @lats = []
+       @lons = []
  
        begin
          Archive::Reader.open_filename(@file).each_entry_with_data do |entry, data|
@@@ -94,9 -98,9 +98,9 @@@
  
            first = true
  
-           points.each_with_index do |p, pt|
-             px = proj.x(p.longitude)
-             py = proj.y(p.latitude)
+           @actual_points.times do |pt|
+             px = proj.x @lons[pt]
+             py = proj.y @lats[pt]
  
              if (pt >= (points_per_frame * n)) && (pt <= (points_per_frame * (n + 1)))
                pen.thickness = 3
  
          first = true
  
-         points do |p|
-           px = proj.x(p.longitude)
-           py = proj.y(p.latitude)
+         @actual_points.times do |pt|
+           px = proj.x @lons[pt]
+           py = proj.y @lats[pt]
  
            pen.line(px, py, oldpx, oldpy) unless first