适用于 Ruby 的最佳邮政编码插件

发布于 2024-09-27 11:09:38 字数 1536 浏览 6 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

屋檐 2024-10-04 11:09:38
gem install geokit

在IRB中:

require 'geokit'
geo = GeoKit::Geocoders::MultiGeocoder.multi_geocoder('90210')
if geo.success
  geo.state # => CA
  geo.city  # => Beverly Hills
end
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
疏忽 2024-10-04 11:09:38

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

require 'area'

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

A more lightweight option is the Area gem.

require 'area'

'11211'.to_region #=> "Brooklyn, NY"
白色秋天 2024-10-04 11:09:38

请参阅杰森的回答。效果很好。


问题是,除非您付费,否则美国邮政局不允许批量下载其邮政编码列表。 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/主题/48815

See Jason's answer. It works nicely.


The problem is that the USPS doesn't allow bulk downloads of their zip-code lists unless you pay for it. Google's API, which is used in the gem mentioned by Splashlin, no longer seems to support the city and state, instead it now returns the area code:

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

This page shows some ways you could roll your own. The sources of the data might not be current though:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文