Add a "More results" link to Nominatim search results.
This commit is contained in:
parent
aa37cecc1d
commit
4f23e718b4
3 changed files with 30 additions and 3 deletions
|
@ -228,14 +228,25 @@ class GeocoderController < ApplicationController
|
|||
viewbox = "&viewbox=#{minlon},#{maxlat},#{maxlon},#{minlat}"
|
||||
end
|
||||
|
||||
# get objects to excude
|
||||
if params[:exclude]
|
||||
exclude = "&exclude_place_ids=#{params[:exclude].join(',')}"
|
||||
end
|
||||
|
||||
# ask nominatim
|
||||
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}#{viewbox}#{exclude}&accept-language=#{request.user_preferred_languages.join(',')}")
|
||||
|
||||
# create result array
|
||||
@results = Array.new
|
||||
|
||||
# ask nominatim
|
||||
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}#{viewbox}&accept-language=#{request.user_preferred_languages.join(',')}")
|
||||
# create parameter hash for "more results" link
|
||||
@more_params = params.reverse_merge({ :exclude => [] })
|
||||
|
||||
# extract the results from the response
|
||||
results = response.elements["searchresults"]
|
||||
|
||||
# parse the response
|
||||
response.elements.each("searchresults/place") do |place|
|
||||
results.elements.each("place") do |place|
|
||||
lat = place.attributes["lat"].to_s
|
||||
lon = place.attributes["lon"].to_s
|
||||
klass = place.attributes["class"].to_s
|
||||
|
@ -248,6 +259,7 @@ class GeocoderController < ApplicationController
|
|||
:min_lat => min_lat, :max_lat => max_lat,
|
||||
:min_lon => min_lon, :max_lon => max_lon,
|
||||
:prefix => prefix, :name => name})
|
||||
@more_params[:exclude].push(place.attributes["place_id"].to_s)
|
||||
end
|
||||
|
||||
render :action => "results"
|
||||
|
|
|
@ -4,4 +4,18 @@
|
|||
<% @results.each do |result| %>
|
||||
<p class="search_results_entry"><%= result_to_html(result) %></p>
|
||||
<% end %>
|
||||
<% if @more_params %>
|
||||
<div id="search_more_<%= @more_params.hash %>">
|
||||
<p class="search_results_entry"><%=
|
||||
startSpinner = update_page do |page|
|
||||
page.replace_html "search_more_#{@more_params.hash}", image_tag("searching.gif", :class => "search_searching")
|
||||
end
|
||||
|
||||
link_to_remote t('geocoder.results.more_results'),
|
||||
:update => "search_more_#{@more_params.hash}",
|
||||
:before => startSpinner,
|
||||
:url => @more_params
|
||||
%></p>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
@ -839,6 +839,7 @@ en:
|
|||
prefix: "{{distance}} {{direction}} of {{type}}"
|
||||
results:
|
||||
no_results: "No results found"
|
||||
more_results: "More results"
|
||||
distance:
|
||||
zero: "less than 1km"
|
||||
one: "about 1km"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue