![image](http://sigizmund.info/upload/sigizmund_small.jpg)
На просторах интернетов уже довольно широко распространен прием показа карты того места, где снята фотография. На практике, это реализуется двумя путями:
- Просто указанием места на карте, например, как это делается на Flickr или при помощи плагина GeoPress для Wordpress
- Извлечением координат из EXIF'а фотографии — если они там есть
Давно, очень давно мучала меня идея — не хочу показывать карту. То есть карта это хорошо, но не все. Хочу человеческим языком сказать посетителю: фотография снята в таком-то городе по такому-то адресу. Ну очень давно хотел я это сделать, и в конце концов собрался.
В качестве «экспериментальной свинки» я взял, разумеется, свой собственный фотоблог — хакать, так по-полной. Немного о том, как он организован:
- В самом «низу» иерархии стоит (ну не лежит же!) Wordpress 2.7
- На этом Wordpress базируется плагин Yet Another Photoblog, который превращает блог в самый настоящий фотоблог
- А вот на YAPB уже в свою очередь крутится тема Reflection, глобально доработанная напильником (практически до неузнаваемости)
Я написал плагин для YAPB (да-да, плагин для плагина), который брал координаты (которые почему-то в EXIF'е записаны в градусах-минутах-секундах), преобразовывал их к WGS84, после чего передавал все клиенту, который делал все остальное (используя, соответственно, JavaScript). Почему так сложно? В первую очередь потому, что в конечном счете используется Google Maps API, и делать это приходится на клиенте. Собственно, каждая страница породжает два вызова API — один для генерации карты, а другой — для обратного геокодинга координат. Собственно, результат этого reverse geocoding'а и отображается в виде адреса. Как это все выглядит вживую можно посмотреть, например, здесь или здесь. Важно заметить, что если в фотографии нет координат — магии не получится, карты не будет и адрес не покажется — так что загрузке фотографии всегда предшествует процесс проставления координат на них (впрочем, он предельно автоматизирован); кроме того, адрес определяется с той точностью, которая доступна поставщику геоданных Гугла (то есть если фотография была сделана в открытой степи в сотне километров от ближайшего населенного пункта — чуда не случится, и вы в лучшем случае получите название дороги).
В принципе, я абсолютно готов поделиться всеми этими наработками, но… код так ужасен, что мне просто стыдно его выкладывать. Возможно, через какое-то время я его причешу и оформлю в виде нормального плагина — если будет к этому интерес. Засим откланиваюсь — и удачных вам кадров!