Return to Snippet

Revision: 11170
at January 27, 2009 03:07 by dbug13


Updated Code
require 'net/http'
require 'uri'
require "rexml/document"

# Retrieves US Location data based on a passed in Zipcode. Uses
# Google Maps geocoding service to retrieve a Hash of city, state, and zip
# For more info on the service see: http://code.google.com/apis/maps/documentation/geocoding/
# 
# example:
#   puts get_location_data(97030).inspect
# outputs:
#   {:state=>"OR", :zip=>"97030", :city=>"Gresham"}

def get_location_data(zip)
  url = "http://maps.google.com/maps/geo"
  uri = URI.parse(url)
  
  req = Net::HTTP::Get.new(uri.path + "?output=xml&q=#{zip}")
  res = Net::HTTP.start(uri.host, uri.port) do |http|
    http.request(req)
  end
  
  data = res.body
  result = {}
  address = ""
  
  doc = REXML::Document.new data
    
  doc.elements.each('//Placemark[1]/address') do |element|
    address = element.text
  end
  
  if address
    parts = address.split(/[,\s*]/)
    result[:city] = parts[0]
    result[:state] = parts[2]
    result[:zip] = parts[3]
  end
  
  result  
end

Revision: 11169
at January 27, 2009 02:59 by dbug13


Initial Code
require 'net/http'
require 'uri'
require "rexml/document"

# Retrieves US Location data based on a passed in Zipcode. Uses
# Google Maps geocoding service to retrieve a Hash of city, state, and zip
# 
# example:
#   puts get_location_data(97030).inspect
# outputs:
#   {:state=>"OR", :zip=>"97030", :city=>"Gresham"}

def get_location_data(zip)
  url = "http://maps.google.com/maps/geo"
  uri = URI.parse(url)
  
  req = Net::HTTP::Get.new(uri.path + "?output=xml&q=#{zip}")
  res = Net::HTTP.start(uri.host, uri.port) do |http|
    http.request(req)
  end
  
  data = res.body
  result = {}
  address = ""
  
  doc = REXML::Document.new data
    
  doc.elements.each('//Placemark[1]/address') do |element|
    address = element.text
  end
  
  if address
    parts = address.split(/[,\s*]/)
    result[:city] = parts[0]
    result[:state] = parts[2]
    result[:zip] = parts[3]
  end
  
  result  
end

Initial URL

                                

Initial Description

                                

Initial Title
Retrieve City, State, and Zip info from Google Geocoding service, by passing in a  Zipcode

Initial Tags
google, ruby

Initial Language
Ruby