class GeoDistance

module GeoDistance

class Spherical < DistanceFormula
  def self.distance( lat1, lon1, lat2, lon2) 
    from_longitude  = lon1.to_radians
    from_latitude   = lat1.to_radians
    to_longitude    = lon2.to_radians
    to_latitude     = lat2.to_radians

    c = Math.acos(
        Math.sin(from_latitude) *
        Math.sin(to_latitude) +

        Math.cos(from_latitude) * 
        Math.cos(to_latitude) *
        Math.cos(to_longitude - from_longitude)
    ) #* EARTH_RADIUS[units.to_sym]

    GeoDistance::Distance.new c
  end
end

end

Attributes

distance[RW]
unit[RW]
units[RW]

Public Class Methods

new(distance, unit = :radians) click to toggle source
# File lib/geo-distance/distance.rb, line 10
def initialize distance, unit = :radians
  @distance = distance
  @unit = GeoUnits.key(unit)
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/geo-distance/distance.rb, line 17
def <=> other
   in_meters <=> other.in_meters
end
number() click to toggle source
# File lib/geo-distance/distance.rb, line 21
def number
  distance.round_to(precision[unit])
end