mongoid_geo 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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
- # PURE MAGIC!!!
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)
@@ -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(:[],0) }
18
- define_method(lng_meth) { read_attribute(name).try(:[],1) }
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)[0] = value
21
+ send(name)[Mongoid::Geo.lat_index] = value
22
22
  end
23
23
  define_method "#{lng_meth}=" do |value|
24
- send(name)[1] = value
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
 
@@ -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
@@ -27,8 +27,13 @@ module Mongoid::Geo
27
27
  private
28
28
 
29
29
  def get_the_location obj
30
- return [obj.lat, obj.lng] if obj.respond_to? :lat
31
- return [obj.latitude, obj.longitude] if obj.respond_to? :latitude
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
@@ -1,3 +1,4 @@
1
1
  require 'mongoid/geo'
2
2
 
3
3
  Mongoid::Geo.mongo_db_version = 1.5
4
+ Mongoid::Geo.spherical = false
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.1
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-04-08 00:00:00.000000000Z
12
+ date: 2011-05-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2153790140 !ruby/object:Gem::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: *2153790140
24
+ version_requirements: *2153178360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mongoid
27
- requirement: &2153789680 !ruby/object:Gem::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: *2153789680
35
+ version_requirements: *2153177900
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bson
38
- requirement: &2153789220 !ruby/object:Gem::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: *2153789220
46
+ version_requirements: *2153177440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &2153788760 !ruby/object:Gem::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: *2153788760
57
+ version_requirements: *2153176980
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hashie
60
- requirement: &2153788300 !ruby/object:Gem::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: *2153788300
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