class PistePal::DataServices::Distance
Public Class Methods
call(trackpoints:)
click to toggle source
# File lib/piste_pal/data_services/distance.rb, line 5 def self.call(trackpoints:) new(trackpoints: trackpoints).call end
new(trackpoints:)
click to toggle source
# File lib/piste_pal/data_services/distance.rb, line 23 def initialize(trackpoints:) @trackpoints = trackpoints end
Public Instance Methods
call()
click to toggle source
# File lib/piste_pal/data_services/distance.rb, line 9 def call if @trackpoints.first.is_a? Array distance = 0 @trackpoints.each do |trackpoints| distance += calculate_distance trackpoints end else distance = calculate_distance @trackpoints end distance end
Private Instance Methods
calculate_distance(trackpoints)
click to toggle source
# File lib/piste_pal/data_services/distance.rb, line 27 def calculate_distance trackpoints distance = 0 total_points = trackpoints.count - 1 point_a = nil point_b = nil for i in 0..total_points do if i == 0 point_a = { latitude: trackpoints[i].lat, longitude: trackpoints[i].lon } next end point_b = { latitude: trackpoints[i].lat, longitude: trackpoints[i].lon } distance += Vincenty.distance_between_points(point_a, point_b) point_a = point_b end distance end