lib/geokit/geocoders/ca_geocoder.rb in geokit-1.9.0 vs lib/geokit/geocoders/ca_geocoder.rb in geokit-1.10.0
- old
+ new
@@ -16,31 +16,31 @@
private
# Template method which does the geocode lookup.
def self.do_geocode(loc)
- raise ArgumentError('Geocoder.ca requires a GeoLoc argument') unless loc.is_a?(GeoLoc)
- process :xml, submit_url(loc), loc
+ process :xml, submit_url(loc), GeoLoc.new
end
def self.parse_xml(xml, loc)
- loc.lat = xml.elements['//latt'].text
- loc.lng = xml.elements['//longt'].text
+ loc.lat = xml.elements["//latt"].text
+ loc.lng = xml.elements["//longt"].text
+ loc.city = xml.elements["//city"].text
+ loc.street_number = xml.elements["//stnumber"].text
+ loc.street_address = xml.elements["//staddress"].text
+ loc.state = xml.elements["//prov"].text
+ loc.province = xml.elements["//prov"].text
+ loc.zip = xml.elements["//postal"].text
loc.success = true
loc
end
# Formats the request in the format acceptable by the CA geocoder.
def self.submit_url(loc)
- args = []
- args << "stno=#{loc.street_number}" if loc.street_address
- args << "addresst=#{Geokit::Inflector.url_escape(loc.street_name)}" if loc.street_address
- args << "city=#{Geokit::Inflector.url_escape(loc.city)}" if loc.city
- args << "prov=#{loc.state}" if loc.state
- args << "postal=#{loc.zip}" if loc.zip
+ args = ["locate=#{Geokit::Inflector.url_escape(loc)}"]
args << "auth=#{key}" if key
- args << 'geoit=xml'
- 'http://geocoder.ca/?' + args.join('&')
+ args << "geoit=xml"
+ "http://geocoder.ca/?" + args.join("&")
end
end
end
end