Как Foursquare определяет часовой пояс для регистрации? - PullRequest
1 голос
/ 02 июня 2011

Глядя на их checkin api , когда вы добавляете регистрацию, она не требует передачи какой-либо информации о времени и дате, но когда вы запрашиваете историю проверки пользователей, возвращает поле часового пояса с указанием часового пояса, где произошла регистрация. Я представляю, как-то они ищут это по широте или долготе. Кто-нибудь знает конкретно, как они это делают?

1 Ответ

1 голос
/ 02 июня 2011

Это, безусловно, основанный на местоположении просмотр против места регистрации.

Я предполагаю, что они вычисляют и кэшируют часовой пояс для места проведения при его создании.Я бы сохранил эту информацию в виде карты кортежей со строками, привязанными к таким данным, как city, [state], country, в распределенной базе данных хеш-таблиц, такой как memcached.Я бы оставлял ограничивающие полигоны доступными для каждого часового пояса (а также многих других географических данных) и предоставлял бы сервис для запросов на основе широты / долготы.Обычно это называется сервис геокодирования.В зависимости от ограничений памяти и изменчивости использования я бы заполнил отображение кортежей из этой службы лениво (т. Е. Только по запросу пользователей).

Для проверок, не имеющих места, они, вероятно, вычисляют его один раз на основе широты / долготы.Храните и сохраняйте эту информацию в течение более короткого промежутка времени, если другие пользователи выполняют регистрацию в том же месте.Могу поспорить, что они также обычно пользуются тем, что поле часового пояса является необязательным, и не заполняют его, если служба геокодирования перегружена.

Если вы ищете службу, которая может обрабатывать этивиды запросов, проверьте http://www.geonames.com ( документация ).

...