I would like to use a click interaction to select multiple features (I have two vector layers) and show their names inside a infobox. What is wrong?
var selectClick = new ol.interaction.Select({
condition: ol.events.condition.Click,
toggleCondition: ol.events.condition.shiftKeyOnly,
});
var select = selectClick;
map.addInteraction(select);
var selectedFeaturesClick = select.getFeatures();
select.on('add', function(e) {
var info = [];
selectedFeaturesClick.push(feature);
info.push(feature.get('DIVISION'));
if (info.length> 0) {
infoBox2.innerHTML = info.join(', ');
}
});
I also tried with this following lines but still not working well. I would like to use a click interaction to select multiple features and show their division names inside a infobox2. Using the following code, if I add a new feature (using the Shift key) the infobox2 is updated with the additional feature name (DIVISION) but it is repeated again in the infobox2 when I try to remove this feature from the selection (with the alt key). I would like to deselect a feature and have its division name removed from the infobox2. How is possible?
var infoBox2 = document.getElementById('info2');
var selectClick = new ol.interaction.Select({
addCondition: ol.events.condition.shiftKeyOnly ,
toggleCondition: ol.events.condition.never,
removeCondition: ol.events.condition.altKeyOnly,
});
select = selectClick;
map.addInteraction(select);
var features = select.getFeatures();
var info = [];
var displayFeatureInfoClick = function(pixel) {
var features = [];
map.forEachFeatureAtPixel(pixel, function(feature, layer) {
features.push(feature);
});
if ( features.length > 0) {
for (var i = 0, ii = features.length; i < ii; ++i) {
info.push(features[i].get('DIVISION'));
}
infoBox2.innerHTML = info.join(', ');
} else {
infoBox2.innerHTML = ' ';
}
};
map.on('click', function(evt) {
displayFeatureInfoClick(evt.pixel);
});