我正在尝试解决“查找附近的送货”类型的问题,您需要找到送货半径覆盖您公寓的所有送货餐厅。
假设我们有
# Restaurant.rb
geocoded_by :location
:latitude
:longitude
:radius
我收到一个搜索查询
# search_queries
search_queries[latitude] = 36.13422
search_queries[longitude] = -122.23411
我目前使用 Geocoder 的低效解决方案是
coord = [search_params[:latitude], search_params[:longitude]]
nearby_deliveries = Restaurant.all.select { |res| res.distance_from(coord) <= res.radius }
地理编码器仅提供一种搜索半径内附近对象的方法,但如何搜索半径覆盖目标的对象?
我在想我应该做类似(伪代码)的事情
Restaurant.where("radius >= THIS.distance_from(target_lat, target_lng)")
或者
Restaurant.where("radius >= Geocoder::Calculations.distance_between([latitude, longitude], [target_lat, target_lng])
但我不知道如何将 Geocoder 的计算与查询交织在一起。
任何帮助是极大的赞赏!