I am using the
geokit-rails
gem to calculate the distance between 2 objets which contain latitude and longitude fields: https://github.com/geokit/geokit-rails
I have a Leg object - which contains both 1 Origin object and 1 Destination object.
Origin looks like this :
class Origin < ApplicationRecord
belongs_to :leg
validates :name, presence: true
validates :longitude, presence: true
validates :latitude, presence: true
validates :type, presence: true
acts_as_mappable :default_units => :miles,
:default_formula => :sphere,
:distance_field_name => :distance,
:lat_column_name => :latitude,
:lng_column_name => :longitude
end
The destination model looks like this:
class Destination < ApplicationRecord
belongs_to :leg
validates :name, presence: true
validates :longitude, presence: true
validates :latitude, presence: true
validates :type, presence: true
acts_as_mappable :default_units => :miles,
:default_formula => :sphere,
:distance_field_name => :distance,
:lat_column_name => :latitude,
:lng_column_name => :longitude
end
Then I call this line in my Leg object, to get a distance between an origin and destination. Both the origin and destination records exist - with valid latitude and longitude values in the DB.
def distance
if(origin.present? && destination.present?)
distance = origin.distance_from(destination, :units=>:miles)
puts "distance in leg is:"+distance.to_s
return distance
else
return 0
end
end
The distance returned is always 0.0, despite using valid origin / destination objects which have appropriate values in the latitude and longitude columns.
Am I using this wrong? Can anybody help?