0

OpenLayers と GeoExt ライブラリを使用する Web サイトがあります。私の目標は、レイヤーごとに不透明度スライダーを設定することです (5 つのレイヤーがあります)。現在、ベクター レイヤーで動作していますが、WMS レイヤーでは動作していません。ベースレイヤー(オープンストリートマップ)で試してみましたが、うまくいきました。

レイヤーを作成するコードは次のとおりです。

//This part is inside an "if success" in an ajax request.   
map.addLayer(new OpenLayers.Layer.WMS(openlayers_wms_layer_analyses, CMCDataServer, {
layers: analysesWMSLayer[currentStatePeriod],
styles: analysesWMSStyle[currentStatePeriod],
format: "image/png",
transparent: true,
time: currentStateDate.getUTCFullYear() + "-" + ('0' + (currentStateDate.getUTCMonth() + 1)).slice(-2) + "-" + ('0' + currentStateDate.getUTCDate()).slice(-2) + "T" + timeChopArray[currentStateIndex] + ":00:00Z"
     },
{
     opacity: 0.73,
     visibility: true
 }));
Ext.getCmp('analyses_validity_display_extjs').setValue(extjs_gui_state_panel_valid_analyses);
Ext.getCmp('extjs_gui_legend_tab_panels').setActiveTab(0);
} else {
    Ext.getCmp('analyses_validity_display_extjs').setValue(extjs_gui_state_panel_invalid_analyses);
    Ext.Msg.alert(extjs_gui_analyses_missing_warning_title, extjs_gui_analyses_missing_warning);
    Ext.getCmp('analyses_checkbox_extjs').setValue(false);
    }
}
});

//This part is a little lower in my code, it's an "else" after the ajax request on top. 
}else if(map.getLayersByName(openlayers_wms_layer_analyses).length!=0){
    adjustStatePanelAnalysesValidity();
    map.removeLayer(map.getLayersByName(openlayers_wms_layer_analyses)[0]);
}
    adjustStatePanelProducts(checkbox, checked);
}

そして、これは私のスライダーのコードです:

new GeoExt.LayerOpacitySlider({
       width: 100,
       value: 100,
       layer: map.getLayersByName(openlayers_wms_layer_analyses)[0],
       aggressive: true, 
       style: {
            position: 'absolute',
            left: '150px'
       }
 }), 

ベクターレイヤーのスライダーにまったく同じコードを使用していますが、正常に動作しています。また、レイヤーの名前をベースレイヤーに変更すると、正常に機能します。レイヤー作成で使用した名前を使用しているため、適切なレイヤーを選択していないためとは思えません。レイヤーの削除方法を確認すると、次のように、私と同じ行を使用していることがわかります。map.removeLayer(map.getLayersByName(openlayers_wms_layer_analyses)[0]);

私を助けてくれるアイデアはありますか?

map.getLayersByName(openlayers_wms_layer_analyses)[0]更新: JavaScript コンソールに書きました。レイヤーを表示するチェックボックスをオンにしなかった場合は「未定義」になりますが、チェックしてレイヤーを表示できる場合は、レイヤーが正しく表示されます。つまり、スライダーが機能するはずです..いいえ?

4

1 に答える 1