Experimental support for reverse geocoding using the new geocoder.
This commit is contained in:
parent
fd70409adb
commit
639a994c9b
7 changed files with 40 additions and 3 deletions
|
@ -287,6 +287,7 @@ class GeocoderController < ApplicationController
|
|||
@sources.push({ :name => "osm_namefinder", :types => "cities", :max => 2 })
|
||||
@sources.push({ :name => "osm_namefinder", :types => "towns", :max => 4 })
|
||||
@sources.push({ :name => "osm_namefinder", :types => "places", :max => 10 })
|
||||
@sources.push({ :name => "osm_twain" }) if APP_CONFIG['twain_enabled']
|
||||
@sources.push({ :name => "geonames" })
|
||||
|
||||
render :update do |page|
|
||||
|
@ -331,6 +332,31 @@ class GeocoderController < ApplicationController
|
|||
render :action => "error"
|
||||
end
|
||||
|
||||
def description_osm_twain
|
||||
# get query parameters
|
||||
lat = params[:lat]
|
||||
lon = params[:lon]
|
||||
zoom = params[:zoom]
|
||||
|
||||
# create result array
|
||||
@results = Array.new
|
||||
|
||||
# ask OSM namefinder
|
||||
response = fetch_xml("http://katie.openstreetmap.org/~twain/reverse.php?lat=#{lat}&lon=#{lon}&zoom=#{zoom}")
|
||||
|
||||
# parse the response
|
||||
response.elements.each("reversegeocode") do |result|
|
||||
description = result.get_text("result").to_s
|
||||
|
||||
@results.push({:prefix => "#{description}"})
|
||||
end
|
||||
|
||||
render :action => "results"
|
||||
rescue Exception => ex
|
||||
@error = "Error contacting katie.openstreetmap.org: #{ex.to_s}"
|
||||
render :action => "error"
|
||||
end
|
||||
|
||||
def description_geonames
|
||||
# get query parameters
|
||||
lat = params[:lat]
|
||||
|
|
|
@ -8,6 +8,6 @@
|
|||
<%= image_tag "searching.gif", :class => "search_searching" %>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
<%= remote_function :update => "description_#{source[:name]}_#{source[:types]}", :url => { :action => "description_#{source[:name]}", :lat => params[:lat], :lon => params[:lon], :types => source[:types], :max => source[:max] } %>
|
||||
<%= remote_function :update => "description_#{source[:name]}_#{source[:types]}", :url => { :action => "description_#{source[:name]}", :lat => params[:lat], :lon => params[:lon], :zoom => params[:zoom], :types => source[:types], :max => source[:max] } %>
|
||||
</script>
|
||||
<% end %>
|
||||
|
|
|
@ -6,10 +6,11 @@
|
|||
|
||||
function describeLocation() {
|
||||
var position = getPosition();
|
||||
var zoom = getZoom();
|
||||
|
||||
<%= remote_function(:loading => "startSearch()",
|
||||
:url => { :controller => :geocoder, :action => :description },
|
||||
:with => "'lat=' + position.lat + '&lon=' + position.lon") %>
|
||||
:with => "'lat=' + position.lat + '&lon=' + position.lon + '&zoom=' + zoom") %>
|
||||
}
|
||||
|
||||
<% if params[:query] %>
|
||||
|
|
|
@ -191,6 +191,10 @@ end
|
|||
return getMapCenter();
|
||||
}
|
||||
|
||||
function getZoom() {
|
||||
return getMapZoom();
|
||||
}
|
||||
|
||||
function setPosition(lat, lon, zoom, min_lon, min_lat, max_lon, max_lat) {
|
||||
var centre = new OpenLayers.LonLat(lon, lat);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue