I assume you're asking about Open Layers 3?
I use Jquery (or straight js) and setup a mouse event on the viewport. This will let you identify what feature is clicked. I also add a custom attribute to the feature to identify if its polygon,icon,etc.
var iconFeature = new ol.Feature({YOUR FEATURE PROPERTIES})
iconFeature.set('automodify',true);
$(map.Map.getViewport()).on('mouseup',function(e){
var feature = map.forEachFeatureAtPixel([e.pageX,e.pageY],function(feature,layer){return feature;});
if(feature){
if(feature.get('automodify')){
handleTheFeatureClick(feature);
}
}
});
function handleTheFeatureClick(feature){
var modify = new ol.interaction.Modify({
features: new ol.Collection([feature])
});
map.addInteraction(modify);
}