Search code examples
javascriptmapsmappingopenlayersgis

getFeatureFromEvent from multiple layers simultaneously in OpenLayers


I'm trying to return multiple features from two layers from a user click (one feature on each layer)?

I'm using openLayers 2.12. I have 2 vector layers containing polygons, and a container layer containing both.

When clicking where both layers contain a feature, only the layer2 feature is returned.

How do I also get the feature at layer1 of the same position?

Is there away to get a feature from a specific layer at a viewport position?


Solution

  • Explanation: the SelectFeature-Control uses the layers getFeatureFromEvent()method to find one feature for a click, hover, touch etc. event. If SelectFeature controls more than one layer, it glues the layers to a virtual single layer, therefore you get at max one feature in this case, too.

    Your 1st question: if you want to select more than one feature, you can use the SelectFeature's selectBox(OpenLayers.Bounds) method: if you create a small Bounds from your position and call selectBox(), all features from all layers controlled by your SC intersecting your bounds get selected.

    Your 2nd question: you may make up an OpenLayer.Event from your viewport position and call the getFeatureFromEvent() for the specific layer. This will of course return only one feature, even if a lot features are overlapping at your position.

    Hope that helps a little.