lib/nominatim/search.rb in nominatim-0.0.5 vs lib/nominatim/search.rb in nominatim-0.0.6

- old
+ new

@@ -7,10 +7,29 @@ @criteria = {} end # Iterates over the search results. def each(&block) - get(Nominatim.config.search_url, @criteria).body.map! { |attrs| Nominatim::Place.new(attrs) }.each(&block) + @criteria.delete(:q) if (@criteria.keys & [:street, :city, :county, :state, :country, :postalcode]).count > 0 + @results ||= get(Nominatim.config.search_url, @criteria).body.map! { |attrs| Nominatim::Place.new(attrs) } + @results.each(&block) + end + + # Structured search requests + # @see https://wiki.openstreetmap.org/wiki/Nominatim + %w(city county state country postalcode).to_a.each do |criterion| + define_method(criterion) do |param| + @criteria[criterion.to_sym] = param + self + end + end + + # Structured street search request + # + # @see https://wiki.openstreetmap.org/wiki/Nominatim + def street housenumber, streetname + @criteria[:street] = "#{housenumber} #{streetname}" + self end # Query string to search for. # # @param q [String] Query string