Рельсы геокит, получающие маршрут, проходящий близко к 2 точкам
У меня есть route
модель
class Route < ActiveRecord::Base
has_many :etapes
acts_as_mappable :through => :steps
end
и step
один (который содержит lat и lgn)
class Step ActiveRecord::Base
belongs_to :route
acts_as_mappable
end
На самом деле, я могу получить маршруты, проходящие близко к одной точке с in_range
объем: Route.joins(:steps).in_range(0..15, :origin => [lat, lng]).group(:id)
Я пытаюсь получить route
проходя близко к 2 steps
, acts_as_mappable
не имеет объема, в котором я нуждаюсь, поэтому я задаюсь вопросом, что лучший путь?
1 ответ
Решение
Ну, для тех, у кого была похожая проблема, я сделал это так.
Дан хеш с 4 точками (2 лат и lng);
ids = Route.joins(:steps).in_range(0..15, :origin => [hash[:lat1], hash[:lng1]]).group(:id).map(&:id)
routes = Route.joins(:steps).in_range(0..15, :origin => [hash[:lat2], hash[:lng2]]).group(:id)
routes.select {|route| ids.include? route.id}
Сначала я беру маршруты в диапазоне с моей первой точкой, затем маршруты в диапазоне с моей второй точкой, и я выбираю в моих первых маршрутах только тот, что во вторых маршрутах.