From cf9400e2893af851bfd6a85ee982c670c5a25f22 Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Thu, 24 Mar 2011 13:01:22 -0400 Subject: [PATCH] Extend to_radians to convert an entire array. --- lib/geocoder/calculations.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/geocoder/calculations.rb b/lib/geocoder/calculations.rb index e85e6677..ac1952a9 100644 --- a/lib/geocoder/calculations.rb +++ b/lib/geocoder/calculations.rb @@ -22,10 +22,7 @@ module Geocoder options[:units] ||= :mi # convert degrees to radians - lat1 = to_radians(lat1) - lon1 = to_radians(lon1) - lat2 = to_radians(lat2) - lon2 = to_radians(lon2) + lat1, lon1, lat2, lon2 = to_radians(lat1, lon1, lat2, lon2) # compute distances dlat = (lat1 - lat2).abs @@ -72,7 +69,7 @@ module Geocoder points.map!{ |p| p.is_a?(Array) ? p : p.to_coordinates }.compact # convert degrees to radians - points.map!{ |p| [to_radians(p[0]), to_radians(p[1])] } + points.map!{ |p| to_radians(p) } # convert to Cartesian coordinates x = []; y = []; z = [] @@ -98,9 +95,15 @@ module Geocoder ## # Convert degrees to radians. + # If an array is passed, converts each value and returns array. # - def to_radians(degrees) - degrees * (Math::PI / 180) + def to_radians(*args) + args = args.first if args.first.is_a?(Array) + if args.size == 1 + args.first * (Math::PI / 180) + else + args.map{ |i| to_radians(i) } + end end ## -- GitLab