aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-01-26 15:22:26 +0100
committerXinhui2017-01-26 15:22:26 +0100
commitf47fe595dfa4006ebd4e65910388493833ac8b81 (patch)
tree065aa233259e2867698b1648a52fc805cd0b78ed
parentf0b070be10bc2c11206e9066d5fac1d6a974f4cc (diff)
downloadchouette-core-f47fe595dfa4006ebd4e65910388493833ac8b81.tar.bz2
Wip search stop_area around a stop_area
-rw-r--r--app/controllers/autocomplete_stop_areas_controller.rb4
-rw-r--r--app/models/chouette/stop_area.rb7
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