Mapfish Appserver

Platform for building web mapping applications

View project onGitHub

Custom searches

Custom search models

app/models/xxx.rb: Search model class inheriting SearchModel

Example (app/models/country.rb):

class Country < SearchModel
  self.table_name = 'countries'
  self.primary_key = 'geodb_oid'

  def self.query(fields, params)
    countries = self.select(fields)
    countries = countries.where('name ILIKE ?', "#{params[:name]}")
    {:features => countries, :quality => 0}
  end
end

Search API

Custom search rules are configured in config/initializers/search_rules.rb.

An entry consists of a name identifying the search and a SearchRule constructor.

Sample entry:

'country' =>
  SearchRule.new( Country,
    %w(ogc_fid name pop_est Box2d(wkb_geometry))
  )

After restart a search query like

http://0.0.0.0:3000/search/country.json?name=Switzerland

returns the following JSON response:

{"success":true,"features":[{"ogc_fid":40,"name":"Switzerland","pop_est":"7604467.0","box2d":"BOX(5.95480920400016 45.820718486,10.4666268310001 47.8011660770001)"}],"quality":0}