2010-10-14 16 views

risposta

19
gem install geokit 

In IRB:

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

La cattura più eccellente! Ho dimenticato geokit. –

+1

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

0

Vedere la risposta di Jason. Funziona bene.


Il problema è che USPS non consente il download in blocco dei propri elenchi di codici di avviamento postale a meno che non si paghi per esso. API di Google, che viene utilizzato nella gemma di cui parla Splashlin, non sembra più per sostenere la città e lo stato, invece ora restituisce il prefisso:

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"}} 

Questa pagina mostra un certo senso si potrebbe rotolare il proprio. Le fonti dei dati potrebbero non essere attuali però:

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

7

Un'opzione più leggero è il Area gem.

require 'area' 

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

ha appena implementato l'area, e devo dire che è davvero fantastico! molto sentimento verso l'api che il geokit. –

+1

Se l'area copre le tue esigenze di geocodifica, è davvero una bella gemma. – theIntuitionist

+0

Heh. Una libreria che modifica una classe principale come String non è qualcosa che definirei "leggera". – Dogweather