if @query.match(/^\d{5}(-\d{4})?$/)
@results.push search_us_postcode(@query)
- elsif @query.match(/(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW]) [0-9][ABD-HJLNP-UW-Z]{2})/i)
+ elsif @query.match(/(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})/i)
@results.push search_uk_postcode(@query)
elsif @query.match(/[A-Z]\d[A-Z]\s*\d[A-Z]\d/i)
@results.push search_ca_postcode(@query)
place = named.elements["place/named"] || named.elements["nearestplaces/named"]
type = named.attributes["info"].to_s.capitalize
name = named.attributes["name"].to_s
- distance = format_distance(place.attributes["approxdistance"].to_i)
- direction = format_direction(place.attributes["direction"].to_i)
- placename = place.attributes["name"].to_s
- results.push({:lat => lat, :lon => lon, :zoom => zoom,
- :description => "#{type} #{name}, #{distance} #{direction} of #{placename}"})
+ if place
+ distance = format_distance(place.attributes["approxdistance"].to_i)
+ direction = format_direction(place.attributes["direction"].to_i)
+ placename = place.attributes["name"].to_s
+ results.push({:lat => lat, :lon => lon, :zoom => zoom,
+ :description => "#{type} #{name}, #{distance} #{direction} of #{placename}"})
+ else
+ results.push({:lat => lat, :lon => lon, :zoom => zoom,
+ :description => "#{type} #{name}"})
+ end
end
return { :source => "OpenStreetMap Namefinder", :url => "http://www.frankieandshadow.com/osm/", :results => results }