在小叶

时间:2015-05-08 11:41:07

标签: ruby-on-rails ruby leaflet

我正在使用leaflet-rails gem(0.7.4),我需要计算轨道距离以防路径来回。在我们的应用程序中,我们上传GPX文件并使用传单显示点。我们通过第一个和最后一个点来计算轨道距离,但是在来回路径的情况下,该轨道距离变为零。这里points是一个坐标数组(纬度和经度)。

def deg2rad deg
  return deg * Math::PI / 180;
end

def fetch_track_distance
 distance = 0
 start_point = self.points.first
 end_point = self.points.last

 if start_point.present? && end_point.present?
  dLat = self.deg2rad(end_point.latitude - start_point.latitude)
  dLon = self.deg2rad(end_point.longitude - start_point.longitude)

  r = Math::sin(dLat/2) *
    Math::sin(dLat/2) +
    Math::cos(self.deg2rad(start_point.latitude)) *
    Math::cos(self.deg2rad(end_point.latitude)) *
    Math::sin(dLon/2) *
    Math::sin(dLon/2);
  c = 2 * Math::atan2(Math.sqrt(r), Math::sqrt(1-r));
  mdist = RADIAN * c;
  distance = (mdist/1000) if mdist.present?
 end

 return distance.round(3)
end  

提前致谢。

0 个答案:

没有答案