rails - Ruby gem para encontrar la zona horaria de la ubicación
metodo times ruby (5)
Consulta esta joya: https://github.com/sck-v/google_timezone
Utiliza google timezone api para determinar la zona horaria por latitud y longitud conocida
Tengo una ubicación (ciudad, estado), fecha y hora, y quiero convertirlo a utc, pero primero necesito encontrar la zona horaria de la ubicación. Hice un poco de investigación y todo parece apuntar a earthtools o geonames, pero ambos servicios web parecen ser de latitud y longitud solamente. ¿Hay algún servicio o gema o alguna otra forma de encontrar la zona horaria basada en este formato de ubicación? o ¿cómo se puede convertir la ubicación a latitud y longitud?
Consulte el Gist en https://gist.github.com/4676207 para obtener una versión que usa la API de Google ( https://developers.google.com/maps/documentation/timezone/ ). Junto con la gema Geocoder puedes encontrar fácilmente todos los identificadores de zona horaria :)
Para la segunda parte de la pregunta, vea la respuesta aceptada a esta pregunta:
Determine la zona horaria a partir de la latitud / longitud sin usar servicios web como Geonames.org
Como se establece en esa respuesta, usted debe:
- Descargue la base de datos de ciudades de geonames.org
- convertirlo en una lista compacta lat / lon -> timezone
- utilice una implementación de R-Tree para buscar eficientemente la ciudad más cercana (o más bien, su zona horaria) a una coordenada dada
Tenga en cuenta también que muchos estados de EE. UU. Pertenecen a una zona horaria única, lo que debería facilitar el trabajo.
Puede hacer sus propias llamadas a un servicio de geolocalización, como Google Maps para traducir Ciudad, Estado en latitud y longitud. También hay bases de datos abiertas que le darán latitud y longitud para las ciudades de todo el mundo. Podrías hacer un modelo de ubicación y sembrar esa tabla con uno de esos.
Aquí hay un lugar donde puedes descargar datos de geolocalización de forma gratuita: http://www.maxmind.com/app/geolitecity
Puedes obtener fácilmente latitud y longitud con la API de geocodificación de google maps . Hay implementaciones de ruby para la API como GeoKit . Una vez que tenga eso, puede usar la gema de la zona horaria para obtener fácilmente la zona horaria de una latitud y longitud. La gema también facilita las conversiones de tiempo en tu zona horaria.
Aquí hay un ejemplo usando GeoKit y GeoKit .
require ''geokit''
require ''timezone''
res = Geokit::Geocoders::GoogleGeocoder.geocode(''140 Market St, San Francisco, CA'')
timezone = Timezone::Zone.new(:latlon => res.ll)
timezone.zone
=> "America/Los_Angeles"
timezone.time Time.now
=> 2011-12-01 14:02:13 UTC