Module: Geocoder::Store::Base

Included in:
ActiveRecord
Defined in:
lib/geo-calculator/store/base.rb

Instance Method Summary collapse

Instance Method Details

#bearing_from(point, options = {}) ⇒ Object

Calculate the bearing from another point to the object. See Geocoder::Calculations.distance_between for ways of specifying the point.



51
52
53
54
55
56
# File 'lib/geo-calculator/store/base.rb', line 51

def bearing_from(point, options = {})
  options[:method] ||= self.class.geocoder_options[:method]
  return nil unless geocoded?
  Geocoder::Calculations.bearing_between(
    point, to_coordinates, options)
end

#bearing_to(point, options = {}) ⇒ Object

Calculate the bearing from the object to another point. See Geocoder::Calculations.distance_between for ways of specifying the point.



39
40
41
42
43
44
# File 'lib/geo-calculator/store/base.rb', line 39

def bearing_to(point, options = {})
  options[:method] ||= self.class.geocoder_options[:method]
  return nil unless geocoded?
  Geocoder::Calculations.bearing_between(
    to_coordinates, point, options)
end

#distance_to(point, units = nil) ⇒ Object Also known as: distance_from

Calculate the distance from the object to an arbitrary point. See Geocoder::Calculations.distance_between for ways of specifying the point. Also takes a symbol specifying the units (:mi or :km; can be specified in Geocoder configuration).



25
26
27
28
29
30
# File 'lib/geo-calculator/store/base.rb', line 25

def distance_to(point, units = nil)
  units ||= self.class.geocoder_options[:units]
  return nil unless geocoded?
  Geocoder::Calculations.distance_between(
    to_coordinates, point, :units => units)
end

#geocodeObject

Look up coordinates and assign to latitude and longitude attributes (or other as specified in geocoded_by). Returns coordinates (array).



73
74
75
# File 'lib/geo-calculator/store/base.rb', line 73

def geocode
  fail
end

#geocoded?Boolean

Is this object geocoded? (Does it have latitude and longitude?)

Returns:

  • (Boolean)


8
9
10
# File 'lib/geo-calculator/store/base.rb', line 8

def geocoded?
  to_coordinates.compact.size > 0
end

#nearbys(radius = 20, options = {}) ⇒ Object

Get nearby geocoded objects. Takes the same options hash as the near class method (scope). Returns nil if the object is not geocoded.



63
64
65
66
67
# File 'lib/geo-calculator/store/base.rb', line 63

def nearbys(radius = 20, options = {})
  return nil unless geocoded?
  options.merge!(:exclude => self) unless send(self.class.primary_key).nil?
  self.class.near(self, radius, options)
end

#reverse_geocodeObject

Look up address and assign to address attribute (or other as specified in reverse_geocoded_by). Returns address (string).



81
82
83
# File 'lib/geo-calculator/store/base.rb', line 81

def reverse_geocode
  fail
end

#to_coordinatesObject

Coordinates [lat,lon] of the object.



15
16
17
# File 'lib/geo-calculator/store/base.rb', line 15

def to_coordinates
  [:latitude, :longitude].map{ |i| send self.class.geocoder_options[i] }
end