1

我正在开发一个 Rails 应用程序,我想从纬度和经度获取时区。我在 stackoverflow 上搜索了这个,发现这个链接是最好的方法。

我安装了 gems geokittimezone并尝试在我的控制台中实现相同的功能:

require 'geokit'
require 'timezone'
res = Geokit::Geocoders::GoogleGeocoder.geocode('140 Market St, San Francisco, CA')
timezone = Timezone::Zone.new(:latlon => res.ll)

但我得到这个错误

ArgumentError: wrong number of arguments (1 for 2)

我检查了Timezone的文档。他们要求通过注册获得用户名。但是我还没有收到任何激活邮件。有人可以为此提出一些解决方案。

提前致谢。

4

1 回答 1

0

看起来调用 Timezone::Zone.new(:latlon => res.ll) 不起作用(至少我得到了同样的错误)。我认为这是由于从 Google 返回的 res.ll 值的格式发生了变化。但是这个电话应该可以完成这项工作:

Timezone::Zone.new(lat: res.lat, lon: res.lng)

但是,首先确保您使用 GeoNames 创建一个帐户并在此处激活它。您还必须为时区 gem 创建和配置初始化程序。后者在这里描述:timezone/lib/timezone/configure.rb

于 2015-04-11T09:59:04.427 回答