We developing a project which contains a lot of data ,
using WMS layers for displaying the points,
Also we used WMS to return points information in a popup window ,
however to highlight selected point we used WFS layer.

Sometimes the popup displayed without highlighting the selected point and vice versa ..!

How could I combine between these two features (highlight selected point and show the popup for it)?

I think one reason is the clicking event defined different,
WFS using:

selectControl.events.register("featureselected", this, function(e) {

and WMS using:        
`popupwindow1=new OpenLayers.Control.WMSGetFeatureInfo({        
     layers: [layer1],   
     autoActivate: true,  
     maxFeatures: 3,  
    infoFormat: "application/vnd.ogc.gml",  
 eventListeners: {....}

The second problem is:
How could I return features from WFS layer without adding the vector layer to the map?

1 Answer 1


For the first problem :

I can not see the whole code (so it is better you post it) but I assume in the code two handlers are registered so two events ("featureselected" and "gefeatureinfo") are listened. That can cause the issue you describe above since you do not have control over in which order trigerred events should be handled.

You can write only one handler and then only getfeatureinfo event could be listened. Once the event received by using the information it contains select.addFeatures([e.feature]) can be issued.

If you look at the api documentation getfeatureinfo event contains "a features property with an array of the parsed features". Therefore the operation I described above can be done by using this information. Then you can decide if you want the highlight first popup later or vice versa.

For the second problem :

You can use GetFeature operation of WFS. In openlayer for able to do so you can use this

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.