2010-10-14 13 views

Respuesta

19
gem install geokit 

En IRB:

require 'geokit' 
geo = GeoKit::Geocoders::MultiGeocoder.multi_geocoder('90210') 
if geo.success 
    geo.state # => CA 
    geo.city # => Beverly Hills 
end 
+0

Most excellent catch! Me olvidé de Geokit. –

+1

https://github.com/geokit/geokit – scarver2

0

Consulte la respuesta de Jason. Funciona bien


El problema es que el USPS no permite las descargas masivas de sus listas de códigos postales a menos que pague por ellas. API de Google, que se utiliza en la gema mencionado por Splashlin, ya no parece apoyar la ciudad y el estado, sino que ahora devuelve el código de área:

require 'open-uri' 
require 'json' 

json = JSON::parse(open('http://maps.google.com/maps/geo?q=852581').read) 
puts json 
# >> {"name"=>"852581", "Status"=>{"code"=>602, "request"=>"geocode"}} 

Esta página muestra algunas maneras que usted puede rodar su propia. Las fuentes de los datos pueden no estar actualizadas sin embargo:

http://www.ruby-forum.com/topic/48815

7

Una opción más ligera es la Area gem.

require 'area' 

'11211'.to_region #=> "Brooklyn, NY" 
+2

acaba de implementar el área, y tengo que decir que es bastante increíble! mucho sentimiento a la api que geokit. –

+1

Si el área cubre sus necesidades de geocodificación, es realmente una buena joya. – theIntuitionist

+0

Heh. Una biblioteca que modifique una clase central como String no es algo que yo llamaría "ligero". – Dogweather

Cuestiones relacionadas