X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/d69a518b9e69107503b332728dfa583594293ea1..e5b973e6444c19af470da00e1c29bc895cf875f1:/lib/geo_record.rb diff --git a/lib/geo_record.rb b/lib/geo_record.rb index d5604d4d3..f1a923c42 100644 --- a/lib/geo_record.rb +++ b/lib/geo_record.rb @@ -1,4 +1,8 @@ module GeoRecord + def self.included(base) + base.extend(ClassMethods) + end + def before_save self.update_tile end @@ -11,12 +15,6 @@ module GeoRecord return true end - def self.find_by_area(minlat, minlon, maxlat, maxlon, options) - self.with_scope(:find => {:conditions => OSM.sql_for_area(minlat, minlon, maxlat, maxlon)}) do - return self.find(:all, options) - end - end - def update_tile self.tile = QuadTile.tile_for_point(lat, lon) end @@ -39,20 +37,18 @@ module GeoRecord return self.longitude.to_f / 10000000 end - # Potlatch projections - def lon_potlatch(baselong,masterscale) - (self.lon-baselong)*masterscale - end - - def lat_potlatch(basey,masterscale) - -(lat2y(self.lat)-basey)*masterscale - end - - private +private def lat2y(a) 180/Math::PI * Math.log(Math.tan(Math::PI/4+a*(Math::PI/180)/2)) end + module ClassMethods + def find_by_area(minlat, minlon, maxlat, maxlon, options) + self.with_scope(:find => {:conditions => OSM.sql_for_area(minlat, minlon, maxlat, maxlon)}) do + return self.find(:all, options) + end + end + end end