Method: Geocoder::Calculations#distance_between

Defined in:
lib/geocoder/calculations.rb

#distance_between(lat1, lon1, lat2, lon2, options = {}) ⇒ Object

Calculate the distance between two points on Earth (Haversine formula). Takes two sets of coordinates and an options hash:

  • :units - :mi (default) or :km



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/geocoder/calculations.rb', line 47

def distance_between(lat1, lon1, lat2, lon2, options = {})

  # set default options
  options[:units] ||= :mi

  # convert degrees to radians
  lat1, lon1, lat2, lon2 = to_radians(lat1, lon1, lat2, lon2)

  # compute deltas
  dlat = lat2 - lat1
  dlon = lon2 - lon1

  a = (Math.sin(dlat / 2))**2 + Math.cos(lat1) *
      (Math.sin(dlon / 2))**2 * Math.cos(lat2)
  c = 2 * Math.atan2( Math.sqrt(a), Math.sqrt(1-a))
  c * earth_radius(options[:units])
end