Я успешно получил Thinking Sphinx, работающий с Geolocation над связанной моделью. Счастливые дни!
Но теперь мне нужно, чтобы он отображал правильную связанную запись на карте Google.
Сценарий - компания с офисами has_many. Офисы имеют значения lng, lat. Я ищу компанию и связываю с ней офисы.
1007 * Е.Г. *
define_index do
indexes :name, :sortable => true
indexes offices(:city), :as => :city
indexes offices(:postal_code), :as => :postal_code
has "RADIANS(offices.lat)", :as => :lat, :type => :float
has "RADIANS(offices.lng)", :as => :lng, :type => :float
has created_at
has updated_at
set_property :latitude_attr => 'lat'
set_property :longitude_attr => 'lng'
set_property :field_weights => { 'name' => 10,
'service_name' => 9,
'city' => 8 }
end
Поиск x компании в y месте / почтовом индексе работает отлично, показывая правильные компании, у которых есть офисы в нужном месте в радиусе @geodist.
1012 * Е.Г. *
{:geo=>[0.9283660690549609, -0.050527407508941975], :sort_mode=>:expr, :sort_by=>"@weight * @weight / @geodist", :with=>{"@geodist"=>0.0..120700.8}, :conditions=>{:service_name=>"Business strategies"}, :page=>1, :per_page=>12, :star=>true}
Полученные записи являются объектом компании, а не офисами, что хорошо для представления списка, но я хочу показать значки на карте Google соответствующего связанного офиса.
Как лучше всего найти соответствующую запись в офисе, чтобы показать ее в пределах радиуса?