Class: Enygma::GeoDistanceProxy
- Inherits:
-
Object
- Object
- Enygma::GeoDistanceProxy
- Defined in:
- lib/enygma/geodistance_proxy.rb
Defined Under Namespace
Classes: InvalidUnits
Constant Summary collapse
- UNIT_CONVERSION =
Hash.new(failproc).merge({ :meters => Proc.new { |d| d }, :kilometers => Proc.new { |d| d / 1000.0 }, :feet => Proc.new { |d| d * 0.3048 }, :miles => Proc.new { |d| d / 1609.344 }, :yards => Proc.new { |d| d * 0.9144 } })
Instance Method Summary collapse
- #feet ⇒ Object
-
#initialize(delegate, distance) ⇒ GeoDistanceProxy
constructor
A new instance of GeoDistanceProxy.
- #kilometers ⇒ Object
- #meters ⇒ Object
- #miles ⇒ Object
- #of(point_or_lat, lng = nil) ⇒ Object
- #yards ⇒ Object
Constructor Details
#initialize(delegate, distance) ⇒ GeoDistanceProxy
Returns a new instance of GeoDistanceProxy.
16 17 18 19 20 |
# File 'lib/enygma/geodistance_proxy.rb', line 16 def initialize(delegate, distance) @delegate = delegate @distance = distance @units = :meters end |
Instance Method Details
#feet ⇒ Object
32 33 34 35 |
# File 'lib/enygma/geodistance_proxy.rb', line 32 def feet @units = :feet self end |
#kilometers ⇒ Object
27 28 29 30 |
# File 'lib/enygma/geodistance_proxy.rb', line 27 def kilometers @units = :kilometers self end |
#meters ⇒ Object
22 23 24 25 |
# File 'lib/enygma/geodistance_proxy.rb', line 22 def meters @units = :meters self end |
#miles ⇒ Object
37 38 39 40 |
# File 'lib/enygma/geodistance_proxy.rb', line 37 def miles @units = :miles self end |
#of(point_or_lat, lng = nil) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/enygma/geodistance_proxy.rb', line 47 def of(point_or_lat, lng = nil) if lng.nil? if point_or_lat.respond_to?(:lat) && point_or_lat.respond_to?(:lng) lat, lng = point_or_lat.lat, point_or_lat.lng elsif point_or_lat.respond_to?(:coordinates) && point_or_lat.coordinates.respond_to?(:lat) && point_or_lat.coordinates.respond_to?(:lng) lat, lng = point_or_lat.coordinates.lat, point_or_lat.coordinates.lng elsif point_or_lat.respond_to?(:point) && point_or_lat.point.respond_to?(:lat) && point_or_lat.point.respond_to?(:lng) lat, lng = point_or_lat.point.lat, point_or_lat.point.lng else raise ArgumentError, "#{point_or_lat.inspect} doesn't seem to be a geometry-enabled object!" end else lat, lng = point_or_lat, lng end @delegate.__send__(:geo_anchor, lat, lng) @delegate.filter('@geodist', UNIT_CONVERSION[@units][@distance]) @delegate end |
#yards ⇒ Object
42 43 44 45 |
# File 'lib/enygma/geodistance_proxy.rb', line 42 def yards @units = :yards self end |