19

I am trying to upgrade my system from Openlayers 2 to Openlayers 3 and I have having one particular issue that I cannot seem to figure out.

My application has a grid and a map and when a user clicks on the grid I want to select the relevant point on the map.

In Openlayers 2 I used the following:

self.selectControl.select(feature[0]);

I cannot find or understand how to do the same in Openlayers 3.

So to be clear, I have a feature which I have found programmatically and I want to select that feature on a map (programmatically)!

I cannot seem to find anything in the APIs but that might be due to my lack of understanding as I am new to Openlayers.

AMadmanTriumphs
  • 4,888
  • 3
  • 28
  • 44

3 Answers3

28

To do this you need to do the following:

mySelectControl.getFeatures().clear() -> removes the selected items

mySelectControl.getFeatures().push(featureToSelect) -> selects the applied feature
AMadmanTriumphs
  • 4,888
  • 3
  • 28
  • 44
  • @bebraw - I will when StackOverflow will let me, says I have to wait another hour (from time of writing) – AMadmanTriumphs Oct 19 '14 at 08:35
  • 1
    Thanks for that. It's far from obvious in any of the official documentation or any of the examples I've found, that you can `push()` to the `getFeatures()` array. _[Yeah, I know, it's inherent in the definition of `ol.Collection`, but that's only obvious in hindsight]_ – Auspex Feb 23 '17 at 09:35
10
var selectInteraction = new ol.interaction.Select(}); 
map.addInteraction(selectInteraction);

function highlightFeature(feat){
   selectInteraction.getFeatures().push(feat);
   selectInteraction.dispatchEvent({
      type: 'select',
      selected: [feat],
      deselected: []
   });
}

works like a char on latest openlayers 4.5

Fuad All
  • 871
  • 11
  • 13
2
  1. Add a select interaction to your map.

    var selectInteraction = new ol.interaction.Select();
    map.addInteraction(selectInteraction);
    
  2. Add any features you want to select to the select interaction's feature array.

    selectInteractions.getFeatures().push(featureToSelect);
    
JellyRaptor
  • 725
  • 1
  • 8
  • 20