题
我需要从邮政编码找到城市和状态。有人知道我可以用来这样做的好插件/API吗?
解决方案
gem install geokit
在IRB中:
require 'geokit'
geo = GeoKit::Geocoders::MultiGeocoder.multi_geocoder('90210')
if geo.success
geo.state # => CA
geo.city # => Beverly Hills
end
其他提示
一个更轻巧的选择是 区域宝石.
require 'area'
'11211'.to_region #=> "Brooklyn, NY"
见杰森的答案。它效果很好。
问题在于,除非您付费,否则USPS不允许大量下载其邮政编码列表。 Google的API(在Splashlin提到的GEM中使用)似乎不再支持城市和州,而是现在返回区域代码:
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"}}
此页面显示了您可以滚动的一些方法。数据的来源可能不是当前的:
不隶属于 StackOverflow