我现在用的是计算2点的经度和纬度位置之间的距离在Rails项目
geokit护栏
宝石来计算包含经度和纬度领域2个OBJETS之间的距离: https://github.com/geokit/geokit-rails
我有一个Leg对象 - 它包含1个Origin对象和1个Destination对象。
起源是这样的:
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
目标模式是这样的:
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
然后我把这个线在我的腿对象,得到一个起点和终点之间的距离。原始和目的地记录都存在 - 在数据库中有有效的纬度和经度值。
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
尽管使用在纬度和经度列中具有适当值的有效原点/目标对象,但返回的距离始终为0.0。
我使用这个错误吗?任何人都可以帮忙吗?
这里有什么错误?你有什么问题? –
Woops!加入 - 对不起! – RenegadeAndy