Hello,
I would like to return all records within 1 km radius from a given
point but is not giving the results I expected. What happens is given
a [lat, lng], only the records with the given coordinates are returned
even though I've set the @geodist (i.e., :with => {"@geodist" =>
0.0..500},) . Below are my models and search code.
Just to test, I use acts_as_mappable's find and it gives the expected results:
>> Location.find(:all, :origin => near.address, :within =>
>> 0.5).collect(&:locatable).paginate(:page => params[:page])
class Workspace < ActiveRecord::Base
has_one :location, :as => :locatable, :dependent => :destroy
define_index do
indexes location.city.name, :as => :city
has location(:id), :as => :location_id
has 'RADIANS(locations.lat)', :as => :lat, :type => :float
has 'RADIANS(locations.lng)', :as => :lng, :type => :float
set_property :latitude_attr => 'lat'
set_property :longitude_attr => 'lng'
set_property :delta => true
end
end
class Location < ActiveRecord::Base
acts_as_mappable :auto_geocode => true
belongs_to :locatable, :polymorphic => true
belongs_to :city
validates_presence_of :lat, :lng
end
def search_locatables
options = { :page => (params[:page] or 1), :per_page => PER_PAGE }
near = Location.find(params[:near])
lat = (near.lat / 180.0) * Math::PI
lng = (near.lng / 180.0) * Math::PI
options.merge! :geo => [lat, lng], :with => {"@geodist" => 0.0..500},
:latitude_attr => :lat, :longitude_attr => :lng
if City.current
options.merge! :conditions => {:city => City.current.name}
end
ThinkingSphinx.search params[:q], options
end
Best regards,
Greg
--
Starting From Scratch
http://gregmoreno.ca
I'm on Twitter too!
http://twitter.com/gregmoreno
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Thinking Sphinx" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/thinking-sphinx?hl=en
-~----------~----~----~----~------~----~------~--~---