Sha256: e2971cfe776983baa9144dadc2c6d8569ec6bbe3698309cd5f4b3a50e6df1db5

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

# Geocoder Us geocoder implementation.  Requires the Geokit::Geocoders::GEOCODER_US variable to
# contain true or false based upon whether authentication is to occur.  Conforms to the
# interface set by the Geocoder class.
module Geokit
  module Geocoders
    class UsGeocoder < Geocoder
      config :key

      private

      def self.do_geocode(address)
        process :csv, submit_url(address)
      end

      def self.submit_url(address)
        address_str = address.is_a?(GeoLoc) ? address.to_geocodeable_s : address
        query = (address_str =~ /^\d{5}(?:-\d{4})?$/ ? "zip" : "address") + "=#{Geokit::Inflector.url_escape(address_str)}"
        base = key ? "http://#{key}@geocoder.us/member" : "http://geocoder.us"
        "#{base}/service/csv/geocode?#{query}"
      end

      def self.parse_csv(array)
        loc = GeoLoc.new
        if array.length == 5
          loc.lat, loc.lng, loc.city, loc.state, loc.zip = array
          loc.country_code = "US"
          loc.success = true
        elsif array.length == 6
          loc.lat, loc.lng, loc.street_address, loc.city, loc.state, loc.zip = array
          loc.country_code = "US"
          loc.success = true
        end
        loc
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geokit-1.10.0 lib/geokit/geocoders/us_geocoder.rb