2011-06-01 44 views
1

当您添加签入时查看他们的checkin api,它不需要传递任何日期时间或时区信息,但是当您查询用户签入历史记录时,它将显示returns a timezone field,指示签入发生的时区。我想不知怎么他们正在用lat/lng或其他东西来查找它。有人知道他们是如何做的吗?foursquare如何确定签入的时区?

+0

你对此有特别的问题,或者这只是一个好奇心? – 2011-06-01 23:38:43

+0

我试图找出所以我可以确定在我的应用程序中处理类似情况的最佳方法。 – Micah 2011-06-02 00:40:15

回答

1

这当然是一个基于位置的查找对检查的位置。

我的猜测是他们计算并缓存了创建场地时区。我会将这些信息存储为一个元组映射,将这些信息存储到分布式散列表数据库(如memcached)中的城市,[州],国家等数据上。我会继续为每个时区(以及许多其他地理数据)提供可用的多边形,并提供基于纬度/经度的查询服务。这通常称为地理编码服务。根据内存约束和使用变化,我会从这个服务延迟填充元组映射(即,只有在用户请求它时)。

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

如果您正在寻找可处理这类查询的服务,请查看http://www.geonames.comdocumentation)。

+0

我想知道如果你在飞机上办理登机手续会发生什么。 – 2011-06-01 23:39:30

+0

我相信在这种情况下,它被认为是“无菌”登记,如果它根本解决了时区问题,它将回落到经纬度(注意每个文档是一个可选字段) – 2011-06-01 23:48:17

+0

@Greg - 编辑以反映该情景。 – 2011-06-01 23:57:40