Рельсы геокит, получающие маршрут, проходящий близко к 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}

Сначала я беру маршруты в диапазоне с моей первой точкой, затем маршруты в диапазоне с моей второй точкой, и я выбираю в моих первых маршрутах только тот, что во вторых маршрутах.

Другие вопросы по тегам