Sha256: b9c0ffa6c62339014e00f9ebaf27280a453271bfec09bef21529432098367f71

Contents?: true

Size: 998 Bytes

Versions: 3

Compression:

Stored size: 998 Bytes

Contents

require 'rgeo'
require 'mongoid_geospatial/extensions/rgeo_spherical_point_impl'

module Mongoid
  module Geospatial

    class Point

      def to_geo
        RGeo::Geographic.spherical_factory.point x, y
      end

      def distance other
        to_geo.distance other.to_geo
      end

      def self.mongoize(obj)
        case obj
        when RGeo::Geographic::SphericalPointImpl then [obj.x, obj.y]
        when Point then obj.mongoize
        when Array then obj.to_xy
        when Hash  then obj.to_xy
        else obj
        end
      end
    end


    class Line < GeometryField
      def to_geo
        RGeo::Geographic.spherical_factory.line_string self
      end

    end

    class Polygon < GeometryField
      def to_geo
        points = self.map do |pair|
          RGeo::Geographic.spherical_factory.point *pair
        end
        ring = RGeo::Geographic.spherical_factory.linear_ring points
        RGeo::Geographic.spherical_factory.polygon ring
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongoid_geospatial-2.7.2 lib/mongoid_geospatial/wrappers/rgeo.rb
mongoid_geospatial-2.7.1 lib/mongoid_geospatial/wrappers/rgeo.rb
mongoid_geospatial-2.7.0 lib/mongoid_geospatial/wrappers/rgeo.rb