Module: Mongoid::Geospatial
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/mongoid_geospatial/version.rb,
lib/mongoid_geospatial/fields/box.rb,
lib/mongoid_geospatial/geospatial.rb,
lib/mongoid_geospatial/fields/line.rb,
lib/mongoid_geospatial/fields/point.rb,
lib/mongoid_geospatial/helpers/core.rb,
lib/mongoid_geospatial/fields/circle.rb,
lib/mongoid_geospatial/wrappers/rgeo.rb,
lib/mongoid_geospatial/fields/polygon.rb,
lib/mongoid_geospatial/wrappers/georuby.rb,
lib/mongoid_geospatial/fields/geometry_field.rb
Defined Under Namespace
Modules: ClassMethods
Classes: Box, Circle, GeometryField, Line, Point, Polygon
Constant Summary
collapse
- VERSION =
"3.0.0"
- LNG_SYMBOLS =
[:x, :lon, :long, :lng, :longitude, 'x', 'lon', 'long', 'longitude']
- LAT_SYMBOLS =
[:y, :lat, :latitude, 'y', 'lat', 'latitude']
- EARTH_RADIUS_KM =
taken directly from mongodb
6371
- RAD_PER_DEG =
Math::PI / 180
- EARTH_RADIUS =
{
:km => EARTH_RADIUS_KM,
:m => EARTH_RADIUS_KM * 1000,
:mi => EARTH_RADIUS_KM * 0.621371192, :ft => EARTH_RADIUS_KM * 5280*0.621371192,
:sm => EARTH_RADIUS_KM * 0.53995680345572 }
- @@lng_symbols =
LNG_SYMBOLS.dup
- @@lat_symbols =
LAT_SYMBOLS.dup
- @@earth_radius =
EARTH_RADIUS.dup
Class Method Summary
collapse
Class Method Details
.from_array(ary) ⇒ Object
4
5
6
|
# File 'lib/mongoid_geospatial/helpers/core.rb', line 4
def self.from_array(ary)
ary[0..1].map(&:to_f)
end
|
.from_hash(hsh) ⇒ Object
8
9
10
11
|
# File 'lib/mongoid_geospatial/helpers/core.rb', line 8
def self.from_hash(hsh)
raise "Hash must have at least 2 items" if hsh.size < 2
[from_hash_x(hsh), from_hash_y(hsh)]
end
|
.from_hash_x(hsh) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/mongoid_geospatial/helpers/core.rb', line 21
def self.from_hash_x(hsh)
v = (Mongoid::Geospatial.lng_symbols & hsh.keys).first
return hsh[v].to_f if !v.nil? && hsh[v]
fail "Hash cannot contain #{Mongoid::Geospatial.lat_symbols.inspect} as the first item if there is no #{Mongoid::Geospatial.lng_symbols.inspect}" if Mongoid::Geospatial.lat_symbols.index(keys[0])
values[0].to_f
end
|
.from_hash_y(hsh) ⇒ Object
13
14
15
16
17
18
19
|
# File 'lib/mongoid_geospatial/helpers/core.rb', line 13
def self.from_hash_y(hsh)
v = (Mongoid::Geospatial.lat_symbols & hsh.keys).first
return hsh[v].to_f if !v.nil? && hsh[v]
fail "Hash must contain #{Mongoid::Geospatial.lat_symbols.inspect} if ruby version is less than 1.9" if RUBY_VERSION.to_f < 1.9
fail "Hash cannot contain #{Mongoid::Geospatial.lng_symbols.inspect} as the second item if there is no #{Mongoid::Geospatial.lat_symbols.inspect}" if Mongoid::Geospatial.lng_symbols.index(hsh.keys[1])
hsh.values[1].to_f
end
|
.with_georuby! ⇒ Object
39
40
41
|
# File 'lib/mongoid_geospatial/geospatial.rb', line 39
def self.with_georuby!
require 'mongoid_geospatial/wrappers/georuby'
end
|
.with_rgeo! ⇒ Object
35
36
37
|
# File 'lib/mongoid_geospatial/geospatial.rb', line 35
def self.with_rgeo!
require 'mongoid_geospatial/wrappers/rgeo'
end
|