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
|
def search_osm_nominatim
|
||||||
# get query parameters
|
# get query parameters
|
||||||
query = params[:query]
|
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
|
# create result array
|
||||||
@results = Array.new
|
@results = Array.new
|
||||||
|
|
||||||
# ask OSM namefinder
|
# ask nominatim
|
||||||
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}")
|
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}#{viewbox}")
|
||||||
|
|
||||||
# parse the response
|
# parse the response
|
||||||
response.elements.each("searchresults/place") do |place|
|
response.elements.each("searchresults/place") do |place|
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
<%= image_tag "searching.gif", :class => "search_searching" %>
|
<%= image_tag "searching.gif", :class => "search_searching" %>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<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>
|
</script>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -13,6 +13,17 @@
|
||||||
:with => "'lat=' + position.lat + '&lon=' + position.lon + '&zoom=' + zoom") %>
|
: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] %>
|
<% if params[:query] %>
|
||||||
<%= remote_function(:loading => "startSearch()",
|
<%= remote_function(:loading => "startSearch()",
|
||||||
:url => { :controller => :geocoder, :action => :search, :query => h(params[:query]) }) %>
|
: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>
|
<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 class="search_form">
|
||||||
<div id="search_field">
|
<div id="search_field">
|
||||||
<% form_remote_tag(:loading => "startSearch()",
|
<% form_remote_tag(:before => "setSearchViewbox()",
|
||||||
|
:loading => "startSearch()",
|
||||||
:complete => "endSearch()",
|
:complete => "endSearch()",
|
||||||
:url => { :controller => :geocoder, :action => :search },
|
:url => { :controller => :geocoder, :action => :search },
|
||||||
:html => { :method => "get", :action => url_for(:action => "index") }) do %>
|
:html => { :method => "get", :action => url_for(:action => "index") }) do %>
|
||||||
<%= text_field_tag :query, h(params[:query]) %>
|
<%= 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') %>
|
<%= submit_tag t('site.search.submit_text') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue