【问题标题】:How does foursquare determine the timezone of a checkin?Foursquare 如何确定签到的时区?
【发布时间】:2023-03-17 21:37:01
【问题描述】:

查看他们的checkin api 添加签入时不需要传递任何日期时间或时区信息,但是当您查询用户签入历史时,returns a timezone field 指示签入发生的时区。我想他们以某种方式通过 lat/lng 或其他方式查找它。有谁知道具体是怎么做的吗?

【问题讨论】:

  • 您对此有什么特别的问题,还是只是出于好奇?
  • 我正在尝试找出答案,以便确定在我的应用中处理类似情况的最佳方法。

标签: api geolocation timezone foursquare


【解决方案1】:

这肯定是基于位置的对签入位置的查找。

我的猜测是,他们会在创建场地时计算并缓存场地的时区。我会将这些信息作为元组映射存储到以城市、[州]、国家等数据为键的字符串的形式,存储在分布式哈希表数据库(如 memcached)中。我会为每个时区(以及许多其他地理数据)保留可用的边界多边形,并提供基于纬度/经度查询它的服务。这通常称为地理编码服务。根据内存限制和使用可变性,我会从该服务中延迟填充元组映射(即,仅在用户请求时)。

对于无场所签到,他们可能会根据纬度/经度计算一次,并将此信息缓存较短的时间,以防其他人在同一位置执行签到。我敢打赌,他们也经常利用时区字段是可选的这一事实,如果地理编码服务超载,则不会填充它。

如果您正在寻找可以处理此类查询的服务,请查看http://www.geonames.com (documentation)。

【讨论】:

  • 我相信在这种情况下,它被认为是“无静脉”签到,如果它完全解析时区,它将回退到纬度/经度(请注意,根据文档,它是一个可选字段)跨度>
  • 您也可以从这里获取时区多边形:efele.net/maps/tz/world
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多