dawarich/app/serializers/points/gpx_serializer.rb

37 lines
790 B
Ruby
Raw Normal View History

2024-09-02 15:35:08 -04:00
# frozen_string_literal: true
class Points::GpxSerializer
def initialize(points, name)
2024-09-02 15:35:08 -04:00
@points = points
@name = name
2024-09-02 15:35:08 -04:00
end
def call
gpx_file = GPX::GPXFile.new(name: "dawarich_#{name}")
track = GPX::Track.new(name: "dawarich_#{name}")
gpx_file.tracks << track
track_segment = GPX::Segment.new
track.segments << track_segment
2024-09-02 15:35:08 -04:00
points.each do |point|
track_segment.points << GPX::TrackPoint.new(
2025-02-21 18:32:30 -05:00
lat: point.lat.to_f,
lon: point.lon.to_f,
elevation: point.altitude.to_f,
time: point.recorded_at
)
end
GPX::GPXFile.new(
name: "dawarich_#{name}",
gpx_data: gpx_file.to_s.sub('<gpx', '<gpx xmlns="http://www.topografix.com/GPX/1/1"')
)
2024-09-02 15:35:08 -04:00
end
private
attr_reader :points, :name
2024-09-02 15:35:08 -04:00
end