Pass the viewbox to nominatim when possible.
This commit is contained in:
parent
7dd06b4f88
commit
e19c04c7a7
3 changed files with 31 additions and 4 deletions
|
@ -218,12 +218,21 @@ class GeocoderController < ApplicationController
|
|||
def search_osm_nominatim
|
||||
# get query parameters
|
||||
query = params[:query]
|
||||
minlon = params[:minlon]
|
||||
minlat = params[:minlat]
|
||||
maxlon = params[:maxlon]
|
||||
maxlat = params[:maxlat]
|
||||
|
||||
# get view box
|
||||
if minlon && minlat && maxlon && maxlat
|
||||
viewbox = "&viewbox=#{minlon},#{maxlat},#{maxlon},#{minlat}"
|
||||
end
|
||||
|
||||
# create result array
|
||||
@results = Array.new
|
||||
|
||||
# ask OSM namefinder
|
||||
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}")
|
||||
# ask nominatim
|
||||
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}#{viewbox}")
|
||||
|
||||
# parse the response
|
||||
response.elements.each("searchresults/place") do |place|
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
<%= image_tag "searching.gif", :class => "search_searching" %>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
<%= remote_function :update => "search_#{source}", :url => { :action => "search_#{source}", :query => @query } %>
|
||||
<%= remote_function :update => "search_#{source}", :url => { :action => "search_#{source}", :query => @query, :minlat => params[:minlat], :minlon => params[:minlon], :maxlat => params[:maxlat], :maxlon => params[:maxlon] } %>
|
||||
</script>
|
||||
<% end %>
|
||||
|
|
|
@ -13,6 +13,17 @@
|
|||
:with => "'lat=' + position.lat + '&lon=' + position.lon + '&zoom=' + zoom") %>
|
||||
}
|
||||
|
||||
function setSearchViewbox() {
|
||||
<% if params[:action] == 'index' %>
|
||||
var extent = getMapExtent();
|
||||
|
||||
$("minlon").value = extent.left;
|
||||
$("minlat").value = extent.bottom;
|
||||
$("maxlon").value = extent.right;
|
||||
$("maxlat").value = extent.top;
|
||||
<% end %>
|
||||
}
|
||||
|
||||
<% if params[:query] %>
|
||||
<%= remote_function(:loading => "startSearch()",
|
||||
:url => { :controller => :geocoder, :action => :search, :query => h(params[:query]) }) %>
|
||||
|
@ -26,11 +37,18 @@
|
|||
<span class="whereami"><a href="javascript:describeLocation()" title="<%= t 'site.search.where_am_i_title' %>"><%= t 'site.search.where_am_i' %></a></span>
|
||||
<div class="search_form">
|
||||
<div id="search_field">
|
||||
<% form_remote_tag(:loading => "startSearch()",
|
||||
<% form_remote_tag(:before => "setSearchViewbox()",
|
||||
:loading => "startSearch()",
|
||||
:complete => "endSearch()",
|
||||
:url => { :controller => :geocoder, :action => :search },
|
||||
:html => { :method => "get", :action => url_for(:action => "index") }) do %>
|
||||
<%= text_field_tag :query, h(params[:query]) %>
|
||||
<% if params[:action] == 'index' %>
|
||||
<%= hidden_field_tag :minlon %>
|
||||
<%= hidden_field_tag :minlat %>
|
||||
<%= hidden_field_tag :maxlon %>
|
||||
<%= hidden_field_tag :maxlat %>
|
||||
<% end %>
|
||||
<%= submit_tag t('site.search.submit_text') %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue