Страницы

Sunday, September 16, 2007

Custom geo tagging

В связи с анонсом очередной версии сервиса GeoLinks (см. здесь) хотелось более подробно описать одну из уже реализованных возможностей. А именно - возможность использования карт в своих приложениях. Как и для большинства картографических сервисов, созданные (или уже имеющиеся) карты можно публиковать на своем сайте (блоге и т.д.) Выглядит это в терминах HTML кода как некоторый iframe, ссылка на который автоматически создается в самом сервисе.

Кнопка, обведенная красным кружком на рисунке (вы можете кликнуть на любой картинке, чтобы посмотреть ее в полном размере) и позволяет получить HTML код для публикации карты на своем сайте. Здесь все достаточно прозрачно - задать размеры карты, указать что (какие ссылки) показывать, указать, нужно ли показывать информационное окно справа (легенду) и т.п. Но есть в форме для ввода и еще одно поле выбора:

Это новая возможность, которая присутствует только в сервисе GeoLinks. Здесь можно задать имена своих JavaScript функций, которые будут вызываться если посетитель вашего сайта (сайта/блога, куда вставлен фрагмент с картой) кликнул на карте или на каком-то маркере. Эти JavaScript функции (callbacks) находятся на вашем сайте и сервису GeoLinks необходимы только их имена, чтобы создать необходимые прокси-вызовы. Для чего это нужно? Вот, например, пара самых очевидных использований:
а) можно отображать данные из GeoLinks по своему, так как это нужно для вашего сайта/сервиса и т.п.
б) можно использовать гео-информацию для ввода данных - то есть добавить geo tagging к своим данным. К формам ввода информации на своем сайте (там, где ваши пользователи вводят какую-то информацию) можно легко добавить карту (это всего лишь iframe, ссылка на который будет создана в сервисе) и предложить автору (объявления, фотографии, предложения, заметки etc.) обозначить себя на карте. Это теперь не нужно программировать. Информация о выборе пользователя придет к вам как вызов вами же определенной JavaScript функции с координатами выбранной точки.

Что в итоге:
- сервис предлагает вам ссылку на карту (iframe)
- сервис предлагает ссылку для добавления JavaScript файла к свое странице:
<script src="http://map.linkstore.ru/geoproxy.js" type="text/javascript"></script>. Размер файла - меньше 2 Kb
- для организации связи с картой вам необходимо написать две собственные функции, которые выглядят подобным образом (имена функций, естественно, могут быть любыми - их вы укажете при создании ссылки на карту):

// click callback
function f(lat,lng)
{
alert("Широта:"+lat+" Долгота:"+lng);
}

// marker callback
function f1(obj)
{
alert("ID:"+obj.id+" Заголовок:"+obj.title+" Ссылка:"+obj.link);
}

Осталось только добавить инициализацию процесса обмена данными:
proxyClick("f","f1");
Это можно сделать, например, в функции onLoad для вашей страницы. Ну и содержание функций будет, видимо, более сложным ;). Что в итоге: Geolinks можно использовать просто как базу картографических данных, которая обеспечивает некоторый просмотр по умолчанию. Реально отображать данные на своем сайте можно так, как это вам нужно.
Что дальше? Если теперь уже ваш JavaScript вместе со ссылкой на соответствующую карту обернуть в iframe, то получится уже ваш собственный гео-виджет (карта с данными + собственный способ отображения информации), который можно будет распространять (давать ссылку на собственный iframe). Так сказать мэшап мэшапа.

Заметим, что для программирования картографических приложений на своем сайте/сервисе вам даже не нужен Goggle Maps API.

Ну и естественно, что все созданные в GeoLinks ссылки привязаны к Google Maps и могут быть использованы в других картографических приложениях. Вы можете получить в сервисе KML файл для выбранной области и использовать его, например, в Google Earth. GeoLinks есть в данном случае просто сервисная облочка, предоставляющая ряд дополнительных функций. Одну из них мы и описали здесь. Но это, естественно, не все, так что следите за новыми анонсами.

1 comment:

  1. Anonymous2:42 PM

    Здорово придумано)) Добавлю в мемориз, потом приспособлю для чего-нибудь.

    ReplyDelete