GUIDE4YOU - layermenu扩展显示/隐藏文本功能

时间:2017-05-12 10:27:01

标签: openlayers-3 guide4you

有没有办法扩展layermenu?

对于 featurelayers ,用户应该可以点击图片或按钮来显示/隐藏该特定图层的功能文字。

显示或隐藏功能的文字由当前' showfeaturetext ''' showfeaturetext '''''层的属性。

目前的代码可以吗?

亲切的问候,

萨姆

2 个答案:

答案 0 :(得分:0)

如果要创建自定义guide4you构建(请参阅https://github.com/KlausBenndorf/guide4you#how-to-install-and-build-guide4youhttps://github.com/KlausBenndorf/guide4you/wiki/How-to-create-an-own-guide4you-module)并覆盖buildLayerButton方法,则可以扩展layerselector。遗憾的是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
    }
}

答案 1 :(得分:0)

我一直在努力尝试这一点。

这些是我的步骤:

  1. 我在源目录中创建了一个新文件:(。\ src \ controls \ MyLayerSelector.js)
  2. 内容:

    从'jquery'

    导入$

    从'./LayerSelector'

    导入{LayerSelector}

    导出类MyLayerSelector扩展了LayerSelector {     buildLayerButton(layer,$ target){         super.buildLayerButton(layer,$ target)         $ button = $ target.children(':last-child')//&lt; - 这应该是你的按钮作为jquery对象     } }

  3. 编辑entry.js。我添加了这一行:

    从'../../ src / Controls / MyLayerSelector'

  4. 导入{MyLayerSelector}
  5. 编辑entry.js。我还添加了这一行:

    window.createG4U = function(target,clientConf = defaultClientConf,layerConf = defaultLayerConf){   return createG4UInternal(target,clientConf,layerConf,[     新的MyLayerSelector()   ]) }

  6. NPM运行构建输出:

  7. 警告: ['./src/Controls/Control.js \ n当忽略大小写时,还有另一个名称相同的模块。\ n当在具有其他大小写语义的文件系统上进行编译时,这可能会导致意外行为。\ n如果有多个模块,则会出现模块如果预期有一个模块,则预期或使用相同的套管。',   './src/controls/Control.js \ n当忽略大小写时,还有另一个名称相同的模块。\ n当在具有其他大小写语义的文件系统上进行编译时,这可能会导致意外行为。\ n如果需要多个模块,则为nnename模块如果预期有一个模块,则使用相同的套管。',   './src/Controls/LayerSelector.js \ n当忽略大小写时,还有另一个名称相同的模块。\ n当在具有其他大小写语义的文件系统上进行编译时,这可能会导致意外行为。\ n如果需要多个模块,则为nnename模块如果预期有一个模块,则使用相同的套管。',   './src/controls/LayerSelector.js \ n当忽略大小写时,还有另一个名称相同的模块。\ n当在具有其他大小写语义的文件系统上进行编译时,这可能会导致意外行为。\ n如果需要多个模块,则会出现模块如果预期有一个模块,则使用相同的套管。',   './src/Controls/ControlLogicMixin.js \ n当忽略大小写时,还有另一个具有相同名称的模块。\ n当在具有其他大小写语义的文件系统上进行编译时,这可能导致意外行为。\ n如果需要多个模块,则为nnename模块如果预期有一个模块,则使用相同的套管。',   './src/controls/ControlLogicMixin.js \ n当忽略大小写时,还有另一个名称相同的模块。\ n当在具有其他大小写语义的文件系统上进行编译时,这可能会导致意外行为。\ n如果需要多个模块,则为nnename模块如果预计有一个模块,则使用相同的套管。 ]

    当我忽略这些警告时,我收到一个javascript错误: 未捕获的TypeError:无法读取未定义的属性“selectL10N”