【问题标题】:mapping location to a time zone将位置映射到时区
【发布时间】:2010-10-05 20:27:57
【问题描述】:

我需要获取给定地址/位置的时区。假设必要时可以将地址/位置反向地理编码(使用 google)到 lat/lng。

这意味着我可能没有邮政编码。

我真的希望谷歌为此提供某种 API,但似乎他们没有。至少你可以在谷歌上搜索“华盛顿特区的时间”并获得时间/TZ——但是我必须筛选出不好玩的内容:(

我知道有可用的数据库将位置映射到时区,但必须维护这些数据库。有没有人想出一个棘手的解决方案来解决这个问题?

谢谢!

【问题讨论】:

    标签: api timezone maps


    【解决方案1】:

    Google 为此提供了API

    https://maps.googleapis.com/maps/api/timezone/<json or xml>?location=<lat>,<lng>&timestamp=<unix timestamp>&sensor=<true or false>

    例如:

    https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331161200&sensor=false

    【讨论】:

      【解决方案2】:

      http://www.geonames.org/ 提供了一个 API,它返回给定 lat/lng 的时区

      【讨论】:

      • geonames 不是免费的,示例使用的“演示”帐户仅限于每天 3000 个请求。我刚刚将它用于开发目的,但它完全停止了工作。
      【解决方案3】:

      这个问题需要进一步澄清。你这样做是为了什么?您使用什么语言?但我将如何解决这个问题:首先,创建一个类似结构的表格,将经度转换为区域(很像 table )。接下来,我将在本地或以某种方式在网络上查询 GMT,最后从表中获取偏移量并将其添加到 GMT。这样就没有表格的“维护”,因为这些经度不会改变。

      【讨论】:

        【解决方案4】:

        为此,我编写了一个小型 Java 类,其中嵌入了代码中的数据结构。如果您想避免使用网络服务,并且 22 公里的精度就足够了,并且您乐于假设时区边界不会改变,那么它可能会有所帮助。

        https://sites.google.com/a/edval.biz/www/mapping-lat-lng-s-to-timezones

        【讨论】:

        • 更准确的版本是61484行代码。代码的性能如何?
        • 性能很快。这只是 lat's 和 long's 的二进制搜索。 (在任何编译语言上都很快,但在 PHP 中会很慢)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        相关资源
        最近更新 更多