我使用此代码来获取我的网站上给定距离内的所有广告。我有两个模型,广告和位置。每个广告都有一个位置。我对每个位置的地址字段进行地理编码,以查找位于用户搜索范围内的地址字段。附近地理位置的地理编码使用了太多的Google地图查询
此代码可能需要重构,但我设法得到它做什么,我需要它;当用户搜索地址时,会显示特定距离内的所有广告。
的问题是代码执行的每一个广告查询,并与我的数据库1000页的广告,这很快越过谷歌地图的限制。我有用户可以点击的按钮来改变搜索距离,每次点击都会对每个广告进行查询。有没有另外一种方法可以编码,这将不需要太多的查询?
#find ads with locations in range of user address search
ads_within_distance = Ad.select { |ad| ad.location.distance_from(cookies[:search_address]) <= distance.to_f }
ads_within_distance.each do |ad|
nearby_ads_id_array = ad.id
end
@nearby_ads = Ads.where(id: nearby_ads_id_array).paginate(:page => params[:page], :per_page => 5).order('created_at DESC')
这显然可以做到,因为像meetup.com这样的许多网站都有这个功能。我愿意使用任何最有效的方法。我真的很感激任何意见。