2010-10-14 2 views

ответ

19
gem install geokit 

В IRB:

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

Самый превосходный улов! Я забыл о геоките. –

+1

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

0

См. Ответ Джейсона. Он работает красиво.


Проблема в том, что USPS не разрешает массовую загрузку своих почтовых индексов, если вы не платите за нее. API Google, который используется в камень упомянутой Splashlin, больше не кажется, поддерживает города и государства, а теперь он возвращает код города:

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

Эта страница показывает несколько способов, вы можете свернуть свой собственный. Источники данных не может быть текущим, хотя:

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

7

Более легкий вариант является Area gem.

require 'area' 

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

только что реализованная область, и должен сказать - ее довольно удивительный! большое чувство к api, чем geokit. –

+1

Если область покрывает ваши потребности в геокодировании, это действительно хороший камень. – theIntuitionist

+0

Хех. Библиотека, которая модифицирует основной класс, такой как String, не является тем, что я бы назвал «легким». – Dogweather

Смежные вопросы