Есть ли способ скрыть слой от LayerSwitcher (OpenLayers), но все равно увидеть соответствующий GeoExt.LegendPanel?

У меня есть легенда из моих слоев карты. Это добавляет цветовую легенду для каждого слоя, добавляемого динамически.

Моя проблема: когда я прошу слой скрыться в переключателе слоев (я не хочу его там видеть), он больше не показывает мне легенду, даже если слой виден.

Есть ли способ, которым я могу держать его вне layerSwitcher, пока показываю мою легенду? Я хочу обойти проблему, которую библиотека вызывает у меня. Если бы был способ скрыть слой от LayerSwitcher в OpenLayers БЕЗ использования DisplayInLayerSwitcher: false, это решило бы мою проблему!!!

Это код моей легенды:

//------ Legend Window ---------------------------------------------------------------------------
/*              --> LegendPanel (This GeoExt Panel automatically displays the legend image of the layer if the layer has been added to the map.
 *                                      If this paticular layer has been removed from the map, his legend image will also automatically be removed from the GeoExt Panel.)
 */
function createLegendPanel(){
        return new Ext.Window({
                id: 'legend_panel_extjs',
                header: true,
                title: '<center>' + extjs_gui_east_panel_title + '</center>',

                shadow: false,
                closable:false,

                collapsible: true,
                animCollapse: false,
                cls: 'WindowPanelCls',
                resizable: false,
                //resizeHandles: 'w',
                draggable: false,

                width:(legendMaxWidth+17),
                height:(legendMaxHeight+15),
                plain: true,

                listeners: {
                        show: windowPosition,
                        collapse: windowPosition
                },
                items: [
                        new GeoExt.LegendPanel({
                                id:'extjs_gui_legend_panel_list',
                                map: map,
                                region:'west',
                                layout: 'table',

                                filter: function(record){
                                        if( !(record.getLayer().isBaseLayer) && !(record.getLayer() instanceof OpenLayers.Layer.Vector) ){
                                                return true;
                                        }
                                },

                                defaults: {
                                        showTitle: false,
                                        baseParams: {
                                                format: 'image/png',
                                                lang: lang
                                        }
                                        ,style: '{border-style: ridge;}'
                                }
                        })
                ]
        });
}

Спасибо всем.

PS: с веб-сайта GeoExt: LegendPanel будет включать в себя легенды для всех слоев в layerStore, с которым он настроен, если только слой не настроен с displayInLayerSwitcher: false или запись слоя имеет поле hideInLegend со значением true. Дополнительную фильтрацию можно выполнить, настроив фильтр на LegendPanel.

0 ответов

Другие вопросы по тегам