lib/geo_units.rb in geo_units-0.2.4 vs lib/geo_units.rb in geo_units-0.2.4.1

- old
+ new

@@ -79,10 +79,39 @@ def latitude_degrees earth_radius_map[:miles] / miles_per_latitude_degree end + def degrees_to_radians(degrees) + degrees.to_f * radians_per_degree + end + + def units_sphere_multiplier(units) + units = GeoUnits.key units + earth_radius_map[units] + end + + def units_per_latitude_degree(units) + units = GeoUnits.key units + GeoUnits.radian_multiplier[units] + end + + def units_per_longitude_degree(lat, units) + miles_per_longitude_degree = (latitude_degrees * Math.cos(lat * pi_div_rad)).abs + units = GeoUnits.key units + case units + when :feet + miles_per_longitude_degree * kms_per_mile * 1000 * meters_per_feet + when :meters + miles_per_longitude_degree * kms_per_mile * 1000 + when :kms + miles_per_longitude_degree * kms_per_mile + when :miles + miles_per_longitude_degree + end + end + module ClassMethods def key unit = :km unit = unit.to_sym methods.grep(/_unit$/).each do |meth| return meth.to_s.chomp('_unit').to_sym if send(meth).include? unit @@ -108,18 +137,20 @@ end } end def earth_radius units - GeoUnits.EARTH_RADIUS[units.to_sym] + units = GeoUnits.key units + GeoUnits.earth_radius_map[units] end def radians_per_degree 0.017453293 # PI/180 end - def radians_ratio unit - radians_per_degree * earth_radius[unit] + def radians_ratio units + units = GeoUnits.key units + radians_per_degree * earth_radius[units] end def precision { :feet => 0,