15

我需要从邮政编码中找到城市和州。有谁知道我可以用来做这个的好插件/API?

4

3 回答 3

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
于 2010-10-14T20:00:04.773 回答
7

一个更轻量级的选项是Area gem

require 'area'

'11211'.to_region #=> "Brooklyn, NY"
于 2012-06-28T00:49:10.990 回答
0

见杰森的回答。它工作得很好。


问题是 USPS 不允许批量下载他们的邮政编码列表,除非您付费。Splashlin 提到的 gem 中使用的 Google 的 API 似乎不再支持城市和州,而是现在返回区号:

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

于 2010-10-14T19:51:03.107 回答