Tweak the namefinder results a bit more.
authorTom Hughes <tom@compton.nu>
Thu, 10 Apr 2008 08:07:09 +0000 (08:07 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 10 Apr 2008 08:07:09 +0000 (08:07 +0000)
app/controllers/geocoder_controller.rb

index 66962c7f6bf58d035e4125ec8e7053050e38e66c..79da2f6e9a2d52bb451e4840557eab0736287bec 100644 (file)
@@ -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