X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/ef7f3d800cbdd49b692df10d312e5fd880e2e938..09900654e6ea5b111e67aa8f5eb1c38e213e653b:/lib/geo_record.rb diff --git a/lib/geo_record.rb b/lib/geo_record.rb index 61185a314..e4a66f932 100644 --- a/lib/geo_record.rb +++ b/lib/geo_record.rb @@ -1,4 +1,19 @@ +require "delegate" + module GeoRecord + # Ensure that when coordinates are printed that they are always in decimal degrees, + # and not e.g. 4.0e-05 + # Unfortunately you can't extend Numeric classes directly (e.g. `Coord < Float`). + class Coord < DelegateClass(Float) + def initialize(obj) + super(obj) + end + + def to_s + format("%.7f", self) + end + end + # This scaling factor is used to convert between the float lat/lon that is # returned by the API, and the integer lat/lon equivalent that is stored in # the database. @@ -31,17 +46,11 @@ module GeoRecord # Return WGS84 latitude def lat - latitude.to_f / SCALE + Coord.new(latitude.to_f / SCALE) end # Return WGS84 longitude def lon - longitude.to_f / SCALE - end - - private - - def lat2y(a) - 180 / Math::PI * Math.log(Math.tan(Math::PI / 4 + a * (Math::PI / 180) / 2)) + Coord.new(longitude.to_f / SCALE) end end