]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/geocoder_controller.rb
Move the ActiveRecord::RecordNotFound to the block, so that it catches the not found...
[rails.git] / app / controllers / geocoder_controller.rb
index 66962c7f6bf58d035e4125ec8e7053050e38e66c..531cce4221df34b2d10155e3f872251113d9197c 100644 (file)
@@ -102,7 +102,7 @@ private
     response = fetch_xml("http://geocoder.ca/?geoit=XML&postal=#{escape_query(query)}")
 
     # parse the response
-    unless response.get_elements("geodata/error")
+    if response.get_elements("geodata/error").empty?
       results.push({:lat => response.get_text("geodata/latt").to_s,
                     :lon => response.get_text("geodata/longt").to_s,
                     :zoom => POSTCODE_ZOOM,
@@ -146,17 +146,18 @@ private
         if place.attributes["rank"].to_i <= 30
           parent = nil
           parentrank = 0
-          parentdistance = 0
+          parentscore = 0
 
           place.elements.each("nearestplaces/named") do |nearest|
             nearestrank = nearest.attributes["rank"].to_i
-            nearestdistance = nearest.attributes["distance"].to_f
+            nearestscore = nearestrank / nearest.attributes["distance"].to_f
 
-            if nearestrank > parentrank or
-               ( nearestrank == parentrank and nearestdistance < parentdistance )
+            if nearestrank > 30 and
+               ( nearestscore > parentscore or
+                 ( nearestscore == parentscore and nearestrank > parentrank ) )
               parent = nearest
               parentrank = nearestrank
-              parentdistance = nearestdistance
+              parentscore = nearestscore
             end
           end
 
@@ -166,7 +167,9 @@ private
             if  place.attributes["info"].to_s == "suburb"
               suffix = "#{suffix}, #{parentname}"
             else
-              suffix = "#{suffix} (near #{parentname})"
+              parentdistance = format_distance(parent.attributes["approxdistance"].to_i)
+              parentdirection = format_direction(parent.attributes["direction"].to_i)
+              suffix = "#{suffix} (#{parentdistance} #{parentdirection} of #{parentname})"
             end
           end
         end