Добрый день! Возник вопрос с написанием внешней функции, нужно из семантик (атрибутов) объекта вывести рисунок (документ в формате IMG или PDF) в виде:
Имеется атрибут с прикрепленным графическим фалом к объекту через файловое хранилище ГИС Сервера и атрибут с описанием объекта:
Общий принцип работы следующий. В качестве аргумента внешняя функция получает json-объект вида {gid:.., layerid:..., containerid:..}. Используя эти данные можно добраться до любой информации об объекте. Семантики можно получить из объекта в карте по идентификатору gid:
Код
mapObject = map.selectedObjects.findobjectsByGid(gid);
mapObject.semantic.semantics; // все семантики объекта,
mapObject.semantic.semantics[i].shortname; // имя i-той семантики
mapObject.semantic.semantics[i]['textvalue']; // значение i-той семантики
А можно выполнить запрос к сервису и получить их оттуда в формате xml через запрос GetFeatureInfo или GetFeature. Более подробно о запросах к сервису смотрите в его документации: http://gistoolkit.ru/download/doc/giswebservicesedoc.pdf
Далее получаем сам файл, указанный в семантике:
Код
// получаем файл с ГИС Сервера в кэш сервиса:
server = "http://localhost/giswebservicese/service.php";
url = server + "?SERVICE=WFS&RESTMETHOD=GETFILEFROMSEMANTIC&LAYER=" + layerid + "&ALIAS=" + encodeURIComponent(semvalue);
...
// сформировать URL на файл из кэша сервиса
url = server + "?SERVICE=WFS&Method=GetFile&FilePath=" + encodeURIComponent(filename) + "&RENAME=" + semfilename;
...
Далее надо сформировать html и вывести его в контейнер с идентификатором containerid. Например:
Код
var elem = $('#'+containerid).html('');
var inner = "<img src=url/><span>text</span>";
elem.html(inner);
В каком виде будет сформирован html зависит только от Вашей фантазии.