class GeoDistance::Model::Location
Attributes
latitude[R]
longitude[R]
Public Class Methods
new(latitude, longitude)
click to toggle source
# File lib/geo_distance/model/location.rb, line 5 def initialize(latitude, longitude) @latitude = Float(latitude) @longitude = Float(longitude) end
Public Instance Methods
distance_to(location)
click to toggle source
Calculates distance to other location in meters using Haversine formula: en.wikipedia.org/wiki/Haversine_formula
# File lib/geo_distance/model/location.rb, line 12 def distance_to(location) delta_latitude_radians = degrees_to_radians(location.latitude - latitude) delta_longitude_radians = degrees_to_radians(location.longitude - longitude) a = Math.sin(delta_latitude_radians/2)**2 + Math.cos(degrees_to_radians(latitude)) * Math.cos(degrees_to_radians(location.latitude)) * Math.sin(delta_longitude_radians/2)**2 c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) c * earth_radius_in_meters end
Private Instance Methods
degrees_to_radians(degrees)
click to toggle source
# File lib/geo_distance/model/location.rb, line 27 def degrees_to_radians(degrees) degrees * Math::PI / 180 end
earth_radius_in_meters()
click to toggle source
# File lib/geo_distance/model/location.rb, line 31 def earth_radius_in_meters 6371 * 1000 end