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

Webtoolkit удаление слоев с карты

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebToolKit
Страницы: 1
RSS
Webtoolkit удаление слоев с карты
 
Слои создаются при помощи GWTK.mapAddLayer

Затем пытаюсь удалить слои при помощи GWTK.mapRemoveLayer или GWTK.mapRemoveLayerById - передаю массив айди, который задавал при создании слоя. Функции возвращают false, в списке map.layers они все на месте. Пытаюсь удалить группу WMS слоев.
 
У вас в GWTK.mapRemoveLayerById цикл обернут в блок трай и не обрабатывает ошибку. Если добавить console.log, то виден эксепшн:

Код
remove TypeError: Cannot read properties of undefined (reading 'id')
    at GWTK.UserControl.onLayersWasChanged (gwtkse.js:formatted:75287)
    at HTMLDivElement.<anonymous> (gwtkse.js:formatted:75233)
    at HTMLDivElement.dispatch (jquery-1.12.4.min.js:3)
    at HTMLDivElement.r.handle (jquery-1.12.4.min.js:3)
    at Object.trigger (jquery-1.12.4.min.js:3)
    at HTMLDivElement.<anonymous> (jquery-1.12.4.min.js:3)
    at Function.each (jquery-1.12.4.min.js:2)
    at n.fn.init.each (jquery-1.12.4.min.js:2)
    at n.fn.init.trigger (jquery-1.12.4.min.js:3)
    at GWTK.WmsLayer.onRemove (gwtkse.js:formatted:54080)
 
Пока сделал так. Помогло. Подскажите, пожалуйста, как это правильно исправить.

Код
if (e.maplayer.act == "remove") {
   return;   // Добавил возврат
   // Ошибка тут 
   var selId = this.$elemLayers.querySelectorAll("option")[this.$elemLayers.selectedIndex].id;
 
GWTK.mapAddLayer создает один слой. Проверьте, что каждый слой из массива удаляемых слоев успешно создан.
 
Цитата
Егор Помозов написал:
GWTK.mapAddLayer создает один слой. Проверьте, что каждый слой из массива удаляемых слоев успешно создан.

Да, я знаю. Они визуально отображаются на карте все. Я В каком месте проблема - я уже написал. Пришлось костылем решить.
 
При удалении слоев методом GWTK.mapRemoveLayer(map, params) параметр params должен быть объектом, содержащим массив идентификаторов слоев в карте (params = {layers: [ 'layerId', 'layerId', ... ]})
 
Цитата
Егор Помозов написал:
При удалении слоев методом GWTK.mapRemoveLayer(map, params) параметр params должен быть объектом, содержащим массив идентификаторов слоев в карте (params = {layers: [ 'layerId', 'layerId', ... ]})

Это понятно. Это не работает. Проблем в коде панорамы - там баг.
 
Пробовал создать wms слой методом GWTK.mapAddLayer и удалять методами GWTK.mapRemoveLayer и GWTK.mapRemoveLayerById. Ошибки при этом не возникало.
Какая версия GIS WebServer используется?
 
Цитата
Егор Помозов написал:
Пробовал создать wms слой методом GWTK.mapAddLayer и удалять методами GWTK.mapRemoveLayer и GWTK.mapRemoveLayerById. Ошибки при этом не возникало.
Какая версия GIS WebServer используется?

6.2.0. Я выше кинул проблемное место которое удалось отдебажить.
 
Сообщите, пожалуйста, используемый браузер и его версию.
В функциях GWTK.mapRemoveLayer и GWTK.mapRemoveLayerById в случае ошибки в блоке catch добавлю диагностическое сообщение.
Страницы: 1
Читают тему (гостей: 1)



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

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