2010-10-14 14 views

Odpowiedz

19
gem install geokit 

W IRB:

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

Najwygodniejszy połów! Zapomniałem o geokicie. –

+1

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

0

Zobacz odpowiedź Jasona. Działa ładnie.


Problem polega na tym, że USPS nie zezwala na zbiorcze pobieranie swoich list zip-code, chyba że za nie zapłacisz. Google API, które jest używane w gem wymienione przez Splashlin, wydaje się nie wspierać miasto i stan, zamiast teraz zwraca numer kierunkowy:

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

Ta strona pokazuje kilka sposobów można przewróceniu własne. Źródłem danych może nie być aktualna mimo:

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

7

Bardziej lekka opcja jest Area gem.

require 'area' 

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

właśnie zaimplementowany obszar, i muszę powiedzieć - jego ładny awesome! wiele uczuć dla APi niż geokitów. –

+1

Jeśli obszar obejmuje twoje potrzeby geokodowania, jest to naprawdę niezły klejnot. – theIntuitionist

+0

Heh. Biblioteka, która modyfikuje klasę podstawową, taką jak String, nie jest czymś, co nazwałbym "lekką". – Dogweather