Sha256: 20dd9e683c386f8c2a16daa781779b28ea4066e4ba6904d96cb2a61d4664b21d

Contents?: true

Size: 817 Bytes

Versions: 1

Compression:

Stored size: 817 Bytes

Contents

module Mongoid
  module Geospatial
    class GeometryField < Array

      def bounding_box
        max_x, min_x = -Float::MAX, Float::MAX
        max_y, min_y = -Float::MAX, Float::MAX
        each do |point|
          max_y = point[1] if point[1] > max_y
          min_y = point[1] if point[1] < min_y
          max_x = point[0] if point[0] > max_x
          min_x = point[0] if point[0] < min_x
        end
        [[min_x, min_y], [max_x, max_y]]
      end
      alias :bbox :bounding_box

      def center_point
        min, max = *bbox
        [min[0] + max[0] / 2.0, min[1] + max[1] / 2.0]
      end
      alias :center :center_point

      def radius r = 1
        [center, r]
      end

      def radius_sphere r = 1
        [center, r.to_f/Mongoid::Geospatial.earth_radius[:km]]
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid_geospatial-2.2.0 lib/mongoid_geospatial/fields/geometry_field.rb