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

Ошибки GisWebServer 3.7.1

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebServer
Страницы: 1
RSS
Ошибки GisWebServer 3.7.1, theMap.mapTools
 
Добрый день, в обновлении gisWebServer 3.7.1 при смене проектов theMap.mapTools пустой скриншот.
А должно быть скриншот.
Также осталась ошибка "внешней функции слоя" при смене проектов (описание http://gisweb.ru/forum/forum6/topic9284/messages/)
Изменено: Валерий Стасюк - 17.02.2018 11:18:41
 
Добрый день!
Вам отвечала, что api-функция для вывода дополнительной информации об объекте должна быть объявлена в window.
А ее реализацию можете написать как вам надо, с использованием классов Вашего приложения.

Уточните, пожалуйста,  что в xml  проекта для списка контролов.  
 
Еще раз на счет внешней функции, прикрепляю скриншоты.
имееться код:
window.testFunc = {
   additionalInfo: function(ob){
       alert('Hello');
       console.log(ob);
   }
};
До смены проекта результат.
После смены проекта (даже если нажать кнопку "применить" на тот же проект) результат.
Я вам предложил готовый вариант фикса ошибки.
Ошибка в строке window[options.layers[i].additionalInfo], (window[func.a.b.c]) – всегда вернет undefined !!!
Решение – window[func][a][b][c].
Изменено: Валерий Стасюк - 19.02.2018 18:17:28
 
mapprojmanagercontrol.js
openProject: function (options, id) {
....
this.map = new GWTK.Map(parent, options);
theMap = this.map;
...
}
помогло
 
index.php, определите функцию

function apiGetInfo() {
       if (typeof gi != 'undefined') {
           console.log('gi.getObjectInfo');
           .....
       }
       else {
           console.log('gi.getObjectInfo - undefined');
       }
   }

Затем используете в параметрах слоя -  "additionalInfo":apiGetInfo.
В тулките надо сделать, как описано.

Ваш код можете использовать у себя в приложении.

theMap  - глобальная переменная. Компонент менеджера с какой стати должен ее изменять?
Это логика приложения, которое ее использует, например в обработчике события смены проекта.
 
 
И где конкретно тогда прописать theMap = map?
 
В случаи описаном выше работает все отлично
 
Цитата
Валерий Стасюк написал:
И где конкретно тогда прописать theMap = map?
У Вас при создании менеджера третий параметр в конструкторе - callback - обработчик смены проекта.
Он (обработчик ) вызывается в функции openProject. В функции callback и сделайте присвоение theMap = map.
map в нее передается.
 
Спасибо, переделал по вашему совету. На мой взгляд лучше один раз присвоить theMap=this.map в самом ядре приложения, т.к. если будет не одна api, где нужно данное присвоение, получается несколько раз будет присвоение theMap=map
Изменено: Валерий Стасюк - 20.02.2018 11:39:40
 
Цитата
Ольга Нефедьева написал:
index.php, определите функцию

function apiGetInfo() {
       if (typeof gi != 'undefined') {
           console.log('gi.getObjectInfo');
           .....
       }
       else {
           console.log('gi.getObjectInfo - undefined');
       }
   }

Затем используете в параметрах слоя -  "additionalInfo":apiGetInfo.
В тулките надо сделать, как описано.

Ваш код можете использовать у себя в приложении.

theMap  - глобальная переменная. Компонент менеджера с какой стати должен ее изменять?
Это логика приложения, которое ее использует, например в обработчике события смены проекта.
Разобрался, чтобы работало нужно к примеру:
window.testFunc = {
   a: {
       b: {
           c: function (ob){
               console.log(ob);
           }
       }
   }
};
function test1(ob) {
   testFunc.a.b.c(ob);
};
Затем в параметрах слоя - "additionalInfo": test1.
А в моей коде можно было внешнюю функцию прописывать так: testFunc.a.b.c
Изменено: Валерий Стасюк - 20.02.2018 12:02:33
Страницы: 1
Читают тему (гостей: 1)



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

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