]> git.openstreetmap.org Git - rails.git/blobdiff - lib/osm.rb
Or maybe this one. #2279. Ugh.
[rails.git] / lib / osm.rb
index 5be2da56a13c050be1d395b18ecae458ed9a0d4d..f36deb0a80906fa185e3c62764727c29604fb436 100644 (file)
@@ -187,18 +187,18 @@ module OSM
   # Raised when a way has more than the configured number of way nodes.
   # This prevents ways from being to long and difficult to work with
   class APITooManyWayNodesError < APIError
-    def initialize(provided, max)
-      @provided, @max = provided, max
+    def initialize(id, provided, max)
+      @id, @provided, @max = id, provided, max
     end
     
-    attr_reader :provided, :max
+    attr_reader :id, :provided, :max
 
     def status
       :bad_request
     end
     
     def to_s
-      "You tried to add #{provided} nodes to the way, however only #{max} are allowed"
+      "You tried to add #{provided} nodes to way #{id}, however only #{max} are allowed"
     end
   end
 
@@ -334,6 +334,11 @@ module OSM
       maxlon = (@lon + lonradius) * 180 / PI
       return { :minlat => minlat, :maxlat => maxlat, :minlon => minlon, :maxlon => maxlon }
     end
+
+    # get the SQL to use to calculate distance
+    def sql_for_distance(lat_field, lon_field)
+      "6372.795 * 2 * asin(sqrt(power(sin((radians(#{lat_field}) - #{@lat}) / 2), 2) + cos(#{@lat}) * cos(radians(#{lat_field})) * power(sin((radians(#{lon_field}) - #{@lon})/2), 2)))"
+    end
   end
 
   class GeoRSS