17: def self.get(request,options = {})
18: api_key = ApiKey.get(options)
19:
20: url = "http://maps.google.com/maps/geo?q=#{URI.encode(request)}&key=#{api_key}&output=kml"
21: xml = open(url).read
22:
23: doc = REXML::Document.new(xml)
24:
25: response = doc.elements['//Response']
26: placemarks = Placemarks.new(response.elements['name'].text,response.elements['Status/code'].text.to_i)
27: response.elements.each("Placemark") do |placemark|
28: data = placemark.elements
29: data_country = data['//CountryNameCode']
30: data_administrative = data['//AdministrativeAreaName']
31: data_sub_administrative = data['//SubAdministrativeAreaName']
32: data_locality = data['//LocalityName']
33: data_dependent_locality = data['//DependentLocalityName']
34: data_thoroughfare = data['//ThoroughfareName']
35: data_postal_code = data['//PostalCodeNumber']
36: placemarks << Geocoding::Placemark.new(data['address'].text,
37: data_country.nil? ? "" : data_country.text,
38: data_administrative.nil? ? "" : data_administrative.text,
39: data_sub_administrative.nil? ? "" : data_sub_administrative.text,
40: data_locality.nil? ? "" : data_locality.text,
41: data_dependent_locality.nil? ? "" : data_dependent_locality.text,
42: data_thoroughfare.nil? ? "" : data_thoroughfare.text,
43: data_postal_code.nil? ? "" : data_postal_code.text,
44: *(data['//coordinates'].text.split(",")[0..1].collect {|l| l.to_f }))
45: end
46: placemarks
47: end