diff --git a/lib/geocoder.rb b/lib/geocoder.rb index 917a2ad294b3a4aaf28b2aea3ed4d1b8d18aff8e..1ac7fd9e99ba927572b40265cfd2c48536b0684e 100644 --- a/lib/geocoder.rb +++ b/lib/geocoder.rb @@ -220,6 +220,9 @@ module Geocoder # def self.geographic_center(points) + # convert lat, lon pairs to radians + points.map!{ |p| [to_radians(p[0]), to_radians(p[1])] } + # convert to Cartesian coordinates x = []; y = []; z = [] points.each do |p| @@ -235,10 +238,11 @@ module Geocoder # convert back to latitude/longitude lon = Math.atan2(ya, xa) - hyp = Math.sqrt(xa * xa + ya * ya) + hyp = Math.sqrt(xa**2 + ya**2) lat = Math.atan2(za, hyp) - [lat,lon] + # return answer in degrees + [to_degrees(lat), to_degrees(lon)] end ## @@ -248,6 +252,13 @@ module Geocoder degrees * (Math::PI / 180) end + ## + # Convert radians to degrees. + # + def self.to_degrees(radians) + (radians * 180.0) / Math::PI + end + ## # Query Google for geographic information about the given phrase. #