Provide extra context for namefinder results where the nearest place
is small (a hamlet, village or suburb). Closes #794.
This commit is contained in:
parent
f8adbf080a
commit
373a3b0577
1 changed files with 36 additions and 1 deletions
|
@ -129,20 +129,51 @@ private
|
|||
type = named.attributes["info"].to_s.capitalize
|
||||
name = named.attributes["name"].to_s
|
||||
description = named.elements["description"].to_s
|
||||
|
||||
if name.empty?
|
||||
prefix = ""
|
||||
name = type
|
||||
else
|
||||
prefix = "#{type} "
|
||||
end
|
||||
|
||||
if place
|
||||
distance = format_distance(place.attributes["approxdistance"].to_i)
|
||||
direction = format_direction(place.attributes["direction"].to_i)
|
||||
placename = place.attributes["name"].to_s
|
||||
placename = format_name(place.attributes["name"].to_s)
|
||||
suffix = ", #{distance} #{direction} of #{placename}"
|
||||
|
||||
if place.attributes["rank"].to_i <= 30
|
||||
parent = nil
|
||||
parentrank = 0
|
||||
parentdistance = 0
|
||||
|
||||
place.elements.each("nearestplaces/named") do |nearest|
|
||||
nearestrank = nearest.attributes["rank"].to_i
|
||||
nearestdistance = nearest.attributes["distance"].to_f
|
||||
|
||||
if nearestrank > parentrank or
|
||||
( nearestrank == parentrank and nearestdistance < parentdistance )
|
||||
parent = nearest
|
||||
parentrank = nearestrank
|
||||
parentdistance = nearestdistance
|
||||
end
|
||||
end
|
||||
|
||||
if parent
|
||||
parentname = format_name(parent.attributes["name"].to_s)
|
||||
|
||||
if place.attributes["info"].to_s == "suburb"
|
||||
suffix = "#{suffix}, #{parentname}"
|
||||
else
|
||||
suffix = "#{suffix} (near #{parentname})"
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
suffix = ""
|
||||
end
|
||||
|
||||
results.push({:lat => lat, :lon => lon, :zoom => zoom,
|
||||
:prefix => prefix, :name => name, :suffix => suffix,
|
||||
:description => description})
|
||||
|
@ -245,6 +276,10 @@ private
|
|||
return "west"
|
||||
end
|
||||
|
||||
def format_name(name)
|
||||
return name.gsub(/( *\[[^\]]*\])*$/, "")
|
||||
end
|
||||
|
||||
def count_results(results)
|
||||
count = 0
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue