2016-04-27 9 views
0

Ich bin ein Modell mit routeGeokit-Schienen die Strecke immer nah an 2 Punkten vorbei

class Route < ActiveRecord::Base 
    has_many :etapes 
    acts_as_mappable :through => :steps 
end 

und einen step einem (enthält lat und LGN)

class Step ActiveRecord::Base 
    belongs_to :route 
    acts_as_mappable 
end 

Eigentlich kann ich Holen Sie sich die Routen nahe an einem Punkt mit dem in_range Bereich: Route.joins(:steps).in_range(0..15, :origin => [lat, lng]).group(:id)

Ich versuche, die route pa zu bekommen ssing in der Nähe von 2 steps, acts_as_mappable hat nicht den Umfang, den ich brauche, also frage ich mich, was der beste Weg zu gehen?

Antwort

0

Nun, für diejenigen, die ähnliche Probleme haben, habe ich es so gemacht.

Gegeben ein Hash mit 4 Punkten (2 lat und 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} 

Ich nehme zuerst die Routen in Reihe mit meinem ersten Punkt, dann die Routen in Reihe mit meinem zweiten Punkt, und ich wählen Sie in meinem ersten Routen nur die eine in der zweiten Routen.

Verwandte Themen