Добрый день! Вам отвечала, что 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].
function apiGetInfo() { if (typeof gi != 'undefined') { console.log('gi.getObjectInfo'); ..... } else { console.log('gi.getObjectInfo - undefined'); } }
Затем используете в параметрах слоя - "additionalInfo":apiGetInfo. В тулките надо сделать, как описано.
Ваш код можете использовать у себя в приложении.
theMap - глобальная переменная. Компонент менеджера с какой стати должен ее изменять? Это логика приложения, которое ее использует, например в обработчике события смены проекта.
Валерий Стасюк написал: И где конкретно тогда прописать theMap = map?
У Вас при создании менеджера третий параметр в конструкторе - callback - обработчик смены проекта. Он (обработчик ) вызывается в функции openProject. В функции callback и сделайте присвоение theMap = map. map в нее передается.
Спасибо, переделал по вашему совету. На мой взгляд лучше один раз присвоить theMap=this.map в самом ядре приложения, т.к. если будет не одна api, где нужно данное присвоение, получается несколько раз будет присвоение theMap=map
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