计算轨道项目中 2 个纬度和经度位置之间的距离



我正在使用

Geokit-rails

gem 用于计算包含纬度和经度字段的 2 个对象之间的距离:https://github.com/geokit/geokit-rails

我有一个 Leg 对象 - 它包含 1 个原点对象和 1 个目标对象。

起源看起来像这样:

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

然后,我在 Leg 对象中调用这条线,以获得起点和目的地之间的距离。起点和目的地记录都存在 - 数据库中具有有效的纬度和经度值。

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,尽管使用了在纬度和经度列中具有适当值的有效起点/目的地对象。

我用错了吗?有人可以帮忙吗?

您是否在日志中看到您的puts "distance in leg is:"+distance.to_s行?

如果不是,则错误归结为返回 false if(origin.present? && destination.present?)

这是完全的用户错误。我在这个问题中发布的代码实际上是完全正确的。

由于模型和控制器中的几个基本问题,纬度和经度列中的值未持久化。

所有固定:)

相关内容

  • 没有找到相关文章

最新更新