I am serving up a WMS layer from GeoServer in OpenLayers and am trying to extract a specific attribute from an object in this layer when I click on the map.

I am defining my WMS layer like this:

       oas = new OpenLayers.Layer.WMS(
          "LAYERS": 'wealthmap_bdy',
          transparent: 'true',
          extractAttributes: 'true'
          buffer: 0,
          opacity: 1,
          displayOutsideMaxExtent: true,
          isBaseLayer: false


The layer is displaying OK on the map. I am using a proxy server and there isn't a cross-domain problem as I can select and display all of the attributes in a popup. "OA11Code" is definitely a field on the WMS layer, and it displays OK with the other attributes in the popup.

But when I try to extract this attribute from the selected object using this code:

oaPicker = new OpenLayers.Control.WMSGetFeatureInfo({
             url: 'http://www.bwgeoserver.com/geoserver/UK_Admin/wms',
             title: 'identify features on click',
             layers: [oas],
             queryVisible: true

   oaPicker.events.register('getfeatureinfo', this, selectid);

   function selectid(e) {
     var val = e.features[0].attributes.OA11Code;

I get an error in the Firefox debugger saying: "TypeError: e.features[0] is undefined".

All I want is to be able to click on the map, extract the value of an attribute from the WMS layer, assign it to a JavaScript variable and do something with it.

Your Answer


Browse other questions tagged or ask your own question.