2010-10-14 5 views

Antwort

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

Am meisten ausgezeichnete Fang! Ich habe Geokit vergessen. –

+1

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

0

Siehe Jasons Antwort. Es funktioniert gut.

Das Problem ist, dass die USPS keine Bulk-Downloads ihrer Postleitzahllisten erlaubt, es sei denn, Sie zahlen dafür. Google-API, die in der Perle von Splashlin erwähnt verwendet wird, scheint nicht mehr die Stadt und den Staat zu unterstützen, gibt sie stattdessen nun die Vorwahl:

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

Diese Seite zeigt einige Möglichkeiten, wie Sie Ihre eigene Rolle könnte. Die Quellen der Daten möglicherweise nicht mehr aktuell sein aber:

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

7

Eine leichtere Option ist die Area gem.

require 'area' 

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

nur implementiertes Gebiet, und ich muss sagen - es ist ziemlich beeindruckend! viel Gefühl zum api als geokit. –

+1

Wenn der Bereich Ihre Geocoding-Bedürfnisse deckt, ist es wirklich ein schönes Juwel. – theIntuitionist

+0

Heh. Eine Bibliothek, die eine Kernklasse wie String verändert, würde ich nicht als "leicht" bezeichnen. – Dogweather