def distance(**opts)
if (opts[:lat1] == opts[:lat2]) && (opts[:lon1] == opts[:lon2])
return 0.0
else
theta = opts[:lon1] - opts[:lon2]
dist = Math.sin(opts[:lat1] * Math::PI / 180) * Math.sin(opts[:lat2] * Math::PI / 180) + Math.cos(opts[:lat1] * Math::PI / 180) * Math.cos(opts[:lat2] * Math::PI / 180) * Math.cos(theta * Math::PI / 180)
dist = Math.acos(dist)
dist = dist * 180 / Math::PI
miles = dist * 60 * 1.1515
unit = opts[:unit]&.upcase
if unit == 'K' # kilometers
return miles * 1.609344
elsif unit == 'N' # nautical miles
return miles * 0.8684
else # statute miles
return miles
end
end
end
# distance(lat1: 47.5706210, lon1: -52.69617, lat2: 47.5706210, lon2: -52.72617, unit: 'K')
#=> 2.250524666738846