diff options
| author | Xinhui | 2017-01-26 15:22:26 +0100 |
|---|---|---|
| committer | Xinhui | 2017-01-26 15:22:26 +0100 |
| commit | f47fe595dfa4006ebd4e65910388493833ac8b81 (patch) | |
| tree | 065aa233259e2867698b1648a52fc805cd0b78ed | |
| parent | f0b070be10bc2c11206e9066d5fac1d6a974f4cc (diff) | |
| download | chouette-core-f47fe595dfa4006ebd4e65910388493833ac8b81.tar.bz2 | |
Wip search stop_area around a stop_area
| -rw-r--r-- | app/controllers/autocomplete_stop_areas_controller.rb | 4 | ||||
| -rw-r--r-- | app/models/chouette/stop_area.rb | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/app/controllers/autocomplete_stop_areas_controller.rb b/app/controllers/autocomplete_stop_areas_controller.rb index 7b4a68f70..19863231f 100644 --- a/app/controllers/autocomplete_stop_areas_controller.rb +++ b/app/controllers/autocomplete_stop_areas_controller.rb @@ -12,8 +12,8 @@ class AutocompleteStopAreasController < InheritedResources::Base end def around - stop_area = referential.stop_areas.find params[:id] - @stop_areas = referential.stop_areas.limit(10) + stop_area = referential.stop_areas.find params[:id] + @stop_areas = stop_area.around(referential.stop_areas, 100) end protected diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index cba43b3ff..5a9d35727 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -178,6 +178,13 @@ class Chouette::StopArea < Chouette::ActiveRecord Chouette::StopArea.bounds ? Chouette::StopArea.bounds.center : nil # FIXME #821 stop_area_referential.envelope.center end + def around(scope, distance) + db = "ST_GeomFromEWKB(ST_MakePoint(longitude, latitude, 4326))" + from = "ST_GeomFromText('POINT(#{self.longitude} #{self.latitude})', 4326)" + sql = "SELECT * FROM public.stop_areas WHERE ST_DWithin(#{db}, #{from}, ?, false)" + scope.find_by_sql [sql, distance] + end + def self.near(origin, distance = 0.3) origin = origin.to_lat_lng |
