На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

получить данные об объекте и записать их в exel файл

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebToolKit
Страницы: 1
RSS
получить данные об объекте и записать их в exel файл, с помощью JS кода необходимо по клику мыши на объект получить слои,на которых расположен объект и id проекта и записать это в exel файл
 
Здравствуйте, я новичок в этой сфере и мне очень нужна помощь, мне нужно получить слои на которых расположен объект и id проекта
по клику мышки на объект на карте и записать их в exel файл, всё это порекомендовали сделать с помощью добавления кода в файл gwtkse.js

вот пример слоев и id объекта

layers=0F9E6FA4-6DD9-4569-8404-4FD766FE6E57,CBD7C8C6-FAA3-43E3-A7C0-AFF6FFBF001D,C4DDCC80-A0F4-4634-9536-C271F54B62A3
projectid=1

Пожалуйста, помогите, буду очень благодарен
 
Порядок действий следующий:

1. Подписаться на событие выбора объекта карты (featurelistclick или featureinforefreshed).
2. Получить информацию о выбранном объекте карты.
3. Сохранить полученную информацию куда требуется.

Пример:

Код
// обработчик выбора объекта в панели "Объекты карты"
$(theMap.eventPane).on('featurelistclick', function (event) {

   // выбранный объект карты
   var mapObject = theMap.selectedObjects.findobjectsByGid(event.gid);

   // информация о выбранном объекте карты
   var gid = mapObject.gid;            // идентификатор объекта (gmlid)
   var layerid = mapObject.maplayerid; // идентификатор слоя объекта 
   
   // в объекте theProjects ищем в какой проект входит слой с идентификатором layerid
   // ..

   // сохраняем полученные данные
   // ..

});


Более подробное описание событий см. в документации - https://gistoolkit.com/download/doc/giswebtoolkitse.pdf
 
Спасибо за ответ,этот код нужно вставить в конец файла или в определенные строки? Я пытался сделать,все эти дни после вашего ответа пробовал разные варианты,но не выходит,может вы подскажете как сохранить данные,например даже в пустой exel файл,и не уверен,что правильно ищу id проекта,надеюсь с этим тоже поможете,пожалуйста
Изменено: Александр Горбань - 03.05.2021 03:15:59
 
Цитата
код нужно вставить в конец файла или в определенные строки?
Код должен быть вставлен в любое место после создания объекта карты. Объект карты создается в функции initMap (файл gwsse.js). Код можно написать в отдельном файле, но вызываться он должен после создания объекта карты.

Цитата
как сохранить данные,например даже в пустой exel файл
js сохранить в excel
 
Здравствуйте,мне нужно,чтобы в таблице справа(прилагаю скриншот) помимо номера объекта и прочего,также отображались долгота,широта,уровень приближения,список отображаемых слоёв и id проекта. Я нашел этот код в gwsse.js, но не знаю куда его применить и поможет ли он,надеюсь на вашу подсказку,спасибо.
Код
/** * Получить параметры из URL и установить их в карту (options)
 * @method updateOptionsByUrl
 */
function updateOptionsByUrl() {//getParamFromUrl() {

  var toDelete = [];
  get_params = parseGetParams();

  // идентификатор проекта
  if ('projectid' in get_params) {
    GWTK.removeCookie('projmanager' + options.username);
  }

  // широта, долгота
  if ('b' in get_params && 'l' in get_params) {
    options.center[0] = get_params['b'];
    options.center[1] = get_params['l'];
    toDelete.push('center');
  }

  // уровень приближения
  if ('z' in get_params) {
    options.tilematrix = get_params['z'];
    toDelete.push('z');
  }

  // список отображаемых слоев
  if ('layers' in get_params) {
    var layers = decodeURIComponent(get_params['layers']).split(',');
    for (var i = 0; i < options.layers.length; i++) {
      if (layers.indexOf(options.layers[i]['id']) == -1) {
        options.layers[i]['hidden'] = 1;
      } else {
        options.layers[i]['hidden'] = 0;
      }
    }
    toDelete.push('layers');
  }

  // идентификатор объекта
  if ('objid' in get_params) {
    var gmlid = decodeURIComponent(get_params['objid']),
      layerId = decodeURIComponent(get_params['ol']);
    if (gmlid.length > 0 && layerId && layerId.length > 0) {
      options.mapobject = {
        'id': gmlid,
        layer_id: layerId
      };
    }
  }




 
Функция updateOptionsByUrl разбирает параметры, которые были переданы в URL и устанавливает их в карту для первого открытия приложения.

Для получения информации о выбранном объекте, необходимо получить описание этого объекта как указано в ответе выше:
Цитата
admin написал:
1. Подписаться на событие выбора объекта карты (featurelistclick или featureinforefreshed).2. Получить информацию о выбранном объекте карты.3. Сохранить полученную информацию куда требуется.

Для вывода дополнительной информации об объекте карты (в панели свойств объекта) необходимо написать функцию, которая будет генерить html-код с этими данными. Имя этой функции необходимо указать в свойствах нужного слоя. На вход внешней функции передается идентификатор объекта, идентификатор слоя карты сервиса (где расположен объект), идентификатор div’а для вывода данных. По этим данным находите объект и получаете всю нужную информацию о нем. Более подробно работа с внешней функцией описана в документации по GIS WebServer SE, раздел - 3.11.6 Вывод дополнительной информации об объекте
Изменено: admin - 07.06.2021 09:09:26
 
Как выполнив это можно получить все свойства семантики объекта?  mapObject.semantic.count() всегда возвращает 0

Цитата
admin написал:
Порядок действий следующий:

1. Подписаться на событие выбора объекта карты (featurelistclick или featureinforefreshed).
2. Получить информацию о выбранном объекте карты.
3. Сохранить полученную информацию куда требуется.

Пример:

Код
 // обработчик выбора объекта в панели "Объекты карты"
$(theMap.eventPane).on('featurelistclick', function (event) {

   // выбранный объект карты
   var mapObject = theMap.selectedObjects.findobjectsByGid(event.gid);

   // информация о выбранном объекте карты
   var gid = mapObject.gid;            // идентификатор объекта (gmlid)
   var layerid = mapObject.maplayerid; // идентификатор слоя объекта 
   
   // в объекте theProjects ищем в какой проект входит слой с идентификатором layerid
   // ..

   // сохраняем полученные данные
   // ..

}); 


Более подробное описание событий см. в документации -  https://gistoolkit.com/download/doc/giswebtoolkitse.pdf
 
mapObject.semantic - объект, в котором есть массив semantics со списком всех семантик выбранного объекта.
Для подсчета количества семантик объекта используйте mapObject.semantic.semantics.length.
Изменено: Егор Помозов - 16.06.2021 18:08:24
 
Цитата
Егор Помозов написал:
mapObject.semantic - объект, в котором есть массив semantics со списком всех семантик выбранного объекта.
Для подсчета количества семантик объекта используйте mapObject.semantic.semantics.length.

В том и дело, что данный массив пустой для выбранного мною объекта. Хотя для точно назначено две семантики.
 
В mapObject.semantic.semantics выводится все семантики выбранного объекта, которые можно увидеть в панели объектов



В панели объектов у объекта 3 семантики, которые также будут в массиве mapObject.semantic.semantics и mapObject.semantic.semantics.length = 3
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности