Sha256: faa4a030add2bb3e59eb0f9a59eb47eb422345d5f27a0b96c5fa38152b73ea2a

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.9.0 lib/geokit/geocoders/us_geocoder.rb