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, = {}) # set default 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([:units]) end |