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/



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

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:



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

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.



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

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



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

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



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

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