I have about 10 or more WMS layers that I'm adding to the map. I'm using
GetFeatureInfo to get values for each layer. So I have 10 of these:
------------------------------------------------------------------------------
map.events.register('click', map, function (e) {
        if (map.layers[layer_index].visibility==true) {
                var params = {  REQUEST: "GetFeatureInfo",
                                        EXCEPTIONS: 
"application/vnd.ogc.se_xml",
                                        BBOX: map.getExtent().toBBOX(),
                                        X: e.xy.x,
                                        Y: e.xy.y,
                                        INFO_FORMAT: 'text/html',
                                        QUERY_LAYERS: 
map.layers[layer_index].params.LAYERS,
                                        FEATURE_COUNT: 50,
                                        Styles: '',
                                        Layers: layer_name,
                                        srs: 'EPSG:900913',
                                        WIDTH: map.size.w,
                                        HEIGHT: map.size.h,
                                        format: 'image/png'     };
                event = e;
                OpenLayers.loadURL("http://app-serv-01-uat/geoserver/wms";, 
params, this,
setHTML, setHTML);
        }
OpenLayers.Event.stop(e);
});
------------------------------------------------------------------------------

And since I have 10 of those for each of the 10 different layers, my code is
getting too long, messy and unmanageable. I tried to refactor it by creating
a for loop:

------------------------------------------------------------------------------
var layers_names = new
Array('sde:forests','sde:lakes','sde:trails,'sde:boundary','sde:buffallo','sde:fish','sde:birds','sde:picnic_sites','sde:rivers','sde:camping');
var layer_indices = new Array(5,6,7,8,9,10,11,12,13,14);
                
var layer_name;
var layer_index;
                
for (var i=0; i<layers_names.length; i++) {
        layer_name = layers_names[i];
        layer_index = layer_indices[i];
                        
        alert(layer_name+" "+layer_index);
                        
        map.events.register('click', map, function (e) {
                if (map.layers[layer_index].visibility==true) {
                        var params = {  REQUEST: "GetFeatureInfo",
                                                EXCEPTIONS: 
"application/vnd.ogc.se_xml",
                                                BBOX: map.getExtent().toBBOX(),
                                                X: e.xy.x,
                                                Y: e.xy.y,
                                                INFO_FORMAT: 'text/html',
                                                QUERY_LAYERS: 
map.layers[layer_index].params.LAYERS,
                                                FEATURE_COUNT: 50,
                                                Styles: '',
                                                Layers: layer_name,
                                                srs: 'EPSG:900913',
                                                WIDTH: map.size.w,
                                                HEIGHT: map.size.h,
                                                format: 'image/png'     };
                        event = e;
                        
OpenLayers.loadURL("http://app-serv-01-uat/geoserver/wms";, params, this,
setHTML, setHTML);
                }
        OpenLayers.Event.stop(e);
});
}
------------------------------------------------------------------------------

My problem with this is that the click event sticks to the last array value
only. In this example, the GetFeatureInfo will only be fired on layer 12,
'sde:camping'. For the rest of the previous layers, it won't fire at all. I
might be missing something, so can someone help me out? Thank you very much.
-- 
View this message in context: 
http://n2.nabble.com/GetFeatureInfo-map-events-register-for-many-WMS-layers-tp3644430p3644430.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
Users@openlayers.org
http://openlayers.org/mailman/listinfo/users

Reply via email to