-
- if place
- distance = format_distance(place.attributes["approxdistance"].to_i)
- direction = format_direction(place.attributes["direction"].to_i)
- placename = format_name(place.attributes["name"].to_s)
- suffix = ", #{distance} #{direction} of #{placename}"
-
- if place.attributes["rank"].to_i <= 30
- parent = nil
- parentrank = 0
- parentscore = 0
-
- place.elements.each("nearestplaces/named") do |nearest|
- nearestrank = nearest.attributes["rank"].to_i
- nearestscore = nearestrank / nearest.attributes["distance"].to_f
-
- if nearestrank > 30 and
- ( nearestscore > parentscore or
- ( nearestscore == parentscore and nearestrank > parentrank ) )
- parent = nearest
- parentrank = nearestrank
- parentscore = nearestscore
- end
- end
-
- if parent
- parentname = format_name(parent.attributes["name"].to_s)
-
- if place.attributes["info"].to_s == "suburb"
- suffix = "#{suffix}, #{parentname}"
- else
- 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
- else
- suffix = ""
+ if klass == "boundary" && type == "administrative"
+ rank = (place.attributes["place_rank"].to_i + 1) / 2
+ prefix_name = t "geocoder.search_osm_nominatim.admin_levels.level#{rank}", :default => prefix_name