Class: Graticule::Geocoder::Multimap

Inherits:
Base
  • Object
show all
Defined in:
lib/graticule/geocoder/multimap.rb

Overview

Multimap geocoding API

Defined Under Namespace

Classes: Address, Result

Constant Summary collapse

PRECISION =

This precision information is not complete. More details should be implemented from: www.multimap.com/share/documentation/clientzone/gqcodes.htm

{
  6 => Precision::Country,
  5 => Precision::Region,
  4 => Precision::PostalCode,
  3 => Precision::Locality,
  2 => Precision::Street,
  1 => Precision::Address
}

Constants inherited from Base

Base::USER_AGENT

Instance Method Summary collapse

Constructor Details

#initialize(api_key) ⇒ Multimap

Web services initializer.

The api_key is the Open API key that uniquely identifies your application.

See www.multimap.com/openapi/



29
30
31
32
# File 'lib/graticule/geocoder/multimap.rb', line 29

def initialize(api_key)
  @api_key = api_key
  @url = URI.parse "http://clients.multimap.com/API/geocode/1.2/#{@api_key}"
end

Instance Method Details

#check_error(result) ⇒ Object

Raises:



93
94
95
# File 'lib/graticule/geocoder/multimap.rb', line 93

def check_error(result)
  raise Error, result.error unless result.error.blank?
end

#locate(address) ⇒ Object

Returns a location for an address in the form of a String, Hash or Location.



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/graticule/geocoder/multimap.rb', line 36

def locate(address)
  location = address.is_a?(String) ? address : location_from_params(address)
  case location
  when String
    get :qs => location
  when Location
    get "street" => location.street,
        "region" => location.region,
        "city" => location.locality,
        "postalCode" => location.postal_code,
        "countryCode" => location.country
  end
end

#parse_response(result) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/graticule/geocoder/multimap.rb', line 79

def parse_response(result)
  addr = result.addresses.first
  Location.new(
    :latitude    => addr.latitude,
    :longitude   => addr.longitude,
    :street      => addr.street,
    :locality    => addr.locality,
    :region      => addr.region,
    :postal_code => addr.postal_code,
    :country     => addr.country,
    :precision   => addr.precision
  )
end

#prepare_response(xml) ⇒ Object



75
76
77
# File 'lib/graticule/geocoder/multimap.rb', line 75

def prepare_response(xml)
  Result.parse(xml, :single => true)
end