X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/f04211b1722e27037b305b58479157b5a492f30a..9efa2c7b92952b7d72bd5dc35dd22deb79d50b35:/lib/geo_record.rb diff --git a/lib/geo_record.rb b/lib/geo_record.rb index 09ced9729..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,11 +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 + Coord.new(longitude.to_f / SCALE) end end