【问题标题】:Filter (no display) layers in GeoExt.LegendPanel using LIKE operator [closed]使用 LIKE 运算符在 GeoExt.LegendPanel 中过滤(不显示)图层 [关闭]
【发布时间】:2023-03-15 00:52:01
【问题描述】:

这可以避免谷歌地图等底图图层和 WMS 等叠加层出现在 GeoExt 图例面板中:

var legendPanel = new GeoExt.LegendPanel({
    border: false,
    filter: function(record){
        if(!(record.getLayer().isBaseLayer) && (record.getLayer() instanceof OpenLayers.Layer.WMS)){
        return true;
        }
    } });

问题是我需要过滤(即不显示)名称中包含“beam”的图层,我尝试这样做没有成功:

return record.getLayer().displayInLayerSwitcher == false && record.getLayer().name == '%beam%';
return record.getLayer().displayInLayerSwitcher == false &&
record.get("layer").name.indexOf("%beam%") == -1;
return record.get("layer").name.indexOf("%beam%") == -1;

欢迎任何提示,

【问题讨论】:

  • 一开始为什么要用%包围关键字?
  • @kryger 感谢您的想法,刚刚得到了解决方案,请在下面查看 igor 的答案。
  • 确定它是交叉发布的,我正在寻找解决方案,你怎么看?

标签: filter panel openlayers legend geoext


【解决方案1】:

只需删除“%”。使用

return record.getLayer().name.indexOf("beam") == -1;

而不是

return record.getLayer().name.indexOf("%beam%") == -1;

【讨论】:

  • 感谢您的回复,但使用您的建议可以得到Uncaught TypeError: Cannot read property 'indexOf' of null。 Afaik,这意味着name(因此indexOf)为空或空。这可能是真的,因为尚未上传任何图层,但我们的想法是在上传图层后应用此过滤器。还有什么想法吗?
  • 如果没有看到完整的代码,很难说问题出在哪里。请参阅此处的工作示例:jsfiddle.net/igor23/a1nkt9vk。在此示例中,图例面板不显示名为“梁”的图层的图例图像。希望这会有所帮助。
  • 谢谢!!我找到了解决方案!
猜你喜欢
  • 2020-01-28
  • 2021-08-08
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
相关资源
最近更新 更多