Class Array
In: vendor/plugins/geokit/lib/geo_kit/acts_as_mappable.rb
Parent: Object

Extend Array with a sort_by_distance method. This method creates a "distance" attribute on each object, calculates the distance from the passed origin, and finally sorts the array by the resulting distance.

Methods

Public Instance methods

[Source]

     # File vendor/plugins/geokit/lib/geo_kit/acts_as_mappable.rb, line 432
432:   def sort_by_distance_from(origin, opts={})
433:     distance_attribute_name = opts.delete(:distance_attribute_name) || 'distance'    
434:     self.each do |e|
435:       e.class.send(:attr_accessor, distance_attribute_name) if !e.respond_to? "#{distance_attribute_name}="
436:       e.send("#{distance_attribute_name}=", origin.distance_to(e,opts))
437:     end
438:     self.sort!{|a,b|a.send(distance_attribute_name) <=> b.send(distance_attribute_name)}
439:   end

[Validate]