mongoid_geo 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +11 -1
- data/lib/mongoid/geo/fields.rb +6 -5
- data/lib/mongoid/geo/geo_near.rb +15 -0
- data/lib/mongoid/geo/point.rb +7 -2
- data/lib/mongoid_geo.rb +1 -0
- metadata +12 -12
data/README.textile
CHANGED
@@ -110,7 +110,17 @@ With the new @:geo@ option supplied by _mongoid-geo_ :
|
|
110
110
|
p.latitude = 44
|
111
111
|
assert(44 , p.latitude)
|
112
112
|
|
113
|
-
#
|
113
|
+
# You can also reverse the lat/lng positioning of the array storage - this is fx useful for spherical calculations
|
114
|
+
|
115
|
+
Mongoid::Geo.spherical_mode do
|
116
|
+
# Mongoid::Geo.lat_index.should == 1
|
117
|
+
# Mongoid::Geo.lng_index.should == 0
|
118
|
+
address.location = "23.5, -47"
|
119
|
+
address.location.should == [23.5, -47].reverse
|
120
|
+
end
|
121
|
+
|
122
|
+
# or alternatively
|
123
|
+
Mongoid::Geo.spherical = true
|
114
124
|
</pre>
|
115
125
|
|
116
126
|
h2. News update (March 2)
|
data/lib/mongoid/geo/fields.rb
CHANGED
@@ -14,14 +14,14 @@ module Mongoid #:nodoc
|
|
14
14
|
lat_meth = options[:lat] || "lat"
|
15
15
|
lng_meth = options[:lng] || "lng"
|
16
16
|
|
17
|
-
define_method(lat_meth) { read_attribute(name).try(:[],
|
18
|
-
define_method(lng_meth) { read_attribute(name).try(:[],
|
17
|
+
define_method(lat_meth) { read_attribute(name).try(:[], Mongoid::Geo.lat_index) }
|
18
|
+
define_method(lng_meth) { read_attribute(name).try(:[], Mongoid::Geo.lng_index) }
|
19
19
|
|
20
20
|
define_method "#{lat_meth}=" do |value|
|
21
|
-
send(name)[
|
21
|
+
send(name)[Mongoid::Geo.lat_index] = value
|
22
22
|
end
|
23
23
|
define_method "#{lng_meth}=" do |value|
|
24
|
-
send(name)[
|
24
|
+
send(name)[Mongoid::Geo.lng_index] = value
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -36,7 +36,8 @@ module Mongoid #:nodoc
|
|
36
36
|
!value.nil? ? value.extend(Mongoid::Geo::Point).to_point : value
|
37
37
|
end
|
38
38
|
value = value[0..1] if !value.nil?
|
39
|
-
end
|
39
|
+
end
|
40
|
+
value.reverse! if Mongoid::Geo.spherical && value
|
40
41
|
write_attribute(name, value)
|
41
42
|
end
|
42
43
|
|
data/lib/mongoid/geo/geo_near.rb
CHANGED
@@ -7,6 +7,21 @@ module Mongoid
|
|
7
7
|
module Geo
|
8
8
|
class << self
|
9
9
|
attr_accessor :mongo_db_version
|
10
|
+
attr_accessor :spherical
|
11
|
+
|
12
|
+
def spherical_mode mode = true, &block
|
13
|
+
@spherical = mode
|
14
|
+
yield if block
|
15
|
+
@spherical = !mode
|
16
|
+
end
|
17
|
+
|
18
|
+
def lat_index
|
19
|
+
@spherical ? 1 : 0
|
20
|
+
end
|
21
|
+
|
22
|
+
def lng_index
|
23
|
+
@spherical ? 0 : 1
|
24
|
+
end
|
10
25
|
end
|
11
26
|
|
12
27
|
module Distance
|
data/lib/mongoid/geo/point.rb
CHANGED
@@ -27,8 +27,13 @@ module Mongoid::Geo
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def get_the_location obj
|
30
|
-
|
31
|
-
return [obj.
|
30
|
+
# if Mongoid::Geo.spherical
|
31
|
+
# return [obj.lng, obj.lat] if obj.respond_to? :lat
|
32
|
+
# return [obj.longitude, obj.latitude] if obj.respond_to? :latitude
|
33
|
+
# else
|
34
|
+
return [obj.lat, obj.lng] if obj.respond_to? :lat
|
35
|
+
return [obj.latitude, obj.longitude] if obj.respond_to? :latitude
|
36
|
+
# end
|
32
37
|
obj.to_f
|
33
38
|
end
|
34
39
|
end
|
data/lib/mongoid_geo.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid_geo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-05-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153178360 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.4'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153178360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: mongoid
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153177900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.0.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153177900
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bson
|
38
|
-
requirement: &
|
38
|
+
requirement: &2153177440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.3'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2153177440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &2153176980 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 3.0.4
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2153176980
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: hashie
|
60
|
-
requirement: &
|
60
|
+
requirement: &2153176520 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 0.4.0
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2153176520
|
69
69
|
description: Geo spatial extension on Mongoid 2, to add more geo-spatial capabilities
|
70
70
|
email:
|
71
71
|
- kmandrup@gmail.com
|