GUIDE4YOU - расширение слоя с возможностью показа / скрытия текстовых объектов
Есть ли способ расширить слой меню?
Для слоев слоев пользователи должны иметь возможность щелкнуть изображение или кнопку, чтобы показать / скрыть текст объектов этого определенного слоя.
Отображение или скрытие текста объекта обрабатывается функцией style на основе текущегосвойства''showfeaturetext'' слоя.
Это возможно с текущим кодом?
С уважением,
Сэм
2 ответа
Вы можете расширить слой layerselector, если вы создаете пользовательские сборки guide4you (см. https://github.com/KlausBenndorf/guide4you и https://github.com/KlausBenndorf/guide4you/wiki/How-to-create-an-own-guide4you-module) и перезаписать метод buildLayerButton. К сожалению, buildLayerButton не возвращает кнопку, что делает ее немного более простой.
export class MyLayerSelector extends LayerSelector {
buildLayerButton (layer, $target) {
super.buildLayerButton(layer, $target)
$target.children(':last-child') // <- this should be your button as a jquery object
}
}
Я пытался это без успеха.
Вот мои шаги:
- Я сделал новый файл в исходном каталоге: (.\ Src\controls\MyLayerSelector.js)
Содержание:
импортировать $ из 'jquery'
import {LayerSelector} из './LayerSelector'
класс экспорта MyLayerSelector extends LayerSelector { buildLayerButton (layer, $target) { super.buildLayerButton(layer, $target) $button = $target.children(':last-child') //<- это должна быть ваша кнопка в качестве jquery объект}}
Отредактируйте entry.js. Я добавил эту строку:
import {MyLayerSelector} из '../../src/Controls/MyLayerSelector'
Отредактируйте entry.js. Я также добавил эту строку:
window.createG4U = function (target, clientConf = defaultClientConf, layerConf = defaultLayerConf) {return createG4UInternal (target, clientConf, layerConf, [new MyLayerSelector ()])}
NPM запустить вывод сборки:
предупреждения: [ './src/Controls/Control.js\nThere - другой модуль с таким же именем, когда регистр игнорируется.\n Это может привести к непредвиденному поведению при компиляции в файловой системе с другим регистром семантики.\n Переименовать модуль, если несколько модули ожидаются или используют одинаковый регистр, если ожидается один модуль.', './src/controls/Control.js\n Нет другого модуля с таким же именем, когда регистр игнорируется.\n Это может привести к неожиданному поведению при компиляции на файловая система с другим регистром-семантическим модулем.\nRename, если ожидается несколько модулей, или используйте одинаковый регистр, если ожидается один модуль.', './src/Controls/LayerSelector.js\nThere - другой модуль с одинаковым именем, когда регистр игнорируется.\n Это может привести к неожиданному поведению при компиляции в файловой системе с другим регистром-семантическим модулем.\nRename, если ожидается несколько модулей, или использовать одинаковый регистр, если ожидается один модуль.', './src/controls/LayerSelector.js \ n Есть другой модуль с таким же именем, когда регистр игнорируется.\n Это может привести к неожиданному поведение при компиляции в файловой системе с другим регистром-семантическим модулем.\nRename, если ожидается несколько модулей, или используйте одинаковый регистр, если ожидается один модуль.', './src/Controls/ControlLogicMixin.js\nThere другой модуль с равным имя, если регистр игнорируется.\n Это может привести к неожиданному поведению при компиляции в файловой системе с другим семантическим регистром.\n Переименовать модуль, если ожидается несколько модулей, или использовать одинаковый регистр, если ожидается один модуль.', './src/controls /ControlLogicMixin.js\n Есть другой модуль с одинаковым именем, когда регистр игнорируется. \ N Это может привести к неожиданному поведению при компиляции в файловой системе с другим регистром семантики. \ N Переименовать модуль, если ожидается несколько модулей, или использовать одинаковый регистр, если один модуль ожидается. ]
Когда я игнорирую эти предупреждения, я получаю ошибку JavaScript: Uncaught TypeError: Невозможно прочитать свойство 'selectL10N' из неопределенного