Я решил это с помощью клиентского приложения. Техника заключалась в том, чтобы сделать цилиндрическую карту мира с цветовой кодировкой, каждый часовой пояс имеет уникальный цвет. Широта-долгота преобразуются в координаты изображения, и цвет координаты считывается, а затем сопоставляется с часовым поясом этого цвета.
Это короткое объяснение не совсем то, что я сделал, но оно передает идею. Я на самом деле заполнил пару словарей и сделал поиск в них. Для заполнения первой версии потребовалось 2 МБ файла ресурсов (после того, как я обработал свою карту и превратил ее в двоичные данные). Теоретическая максимальная ошибка (для широт вблизи экватора) должна была составлять +/- около 15 миль. К сожалению, точность моей стартовой карты была скорее +/- 100 миль.
Так что переделываю проект. Я занимался этим уже несколько дней, создавая более точную карту с более высоким разрешением для кранча. Еще пара дней и дело должно быть сделано. Файл ресурсов будет около 20M, если я не выберу ресурсы только для «тупых областей» и математически не вычислю 90% мира, которые можно рассчитать напрямую (большинство миров можно математически вывести из долготы). Не уверен, что многим будет важно, чтобы файл ресурсов был размером 20 МБ, но некоторым это может быть важно. В любом случае, если появится некоторый интерес, я попытаюсь опубликовать код, необходимый для его запуска, здесь и файл ресурсов на одном из сайтов с общедоступным кодом. Если кажется, что интереса нет, я не буду беспокоить.
Просто повторю еще раз: код, необходимый в вашем приложении, состоит всего из нескольких строк, но файл ресурсов большой (без его сжатия, мой новый работает 22M). Это также быстро (первая версия работала со скоростью 100 Мбит / с). Это ДЕЙСТВИТЕЛЬНО требует загрузки файла, и это занимает немного времени. Версия 2M не имела заметной задержки, но 22M могла бы (еще не было).
person
shooky
schedule
15.11.2012