Има ли събитие, когато функциите са избрани в OpenLayers 3?

http://ol3js.org/en/master/examples/select-features.html

Предвид горните примери, какви точки на разширение има за закачане, когато са избрани функции?


person Poul K. Sørensen    schedule 03.05.2014    source източник


Отговори (3)


Можете да свържете събитие за предварително композиране към вашия слой, когато на вашата карта се задейства събитие с едно щракване. От тук можете да изпратите събитие за промяна на вашето избрано взаимодействие.

yourmap.on('singleclick',function(event)){
    layer.once('precompose',function(event){
        yourSelectInteraction.dispatchChangeEvent();
    }
}

yourSelectInteraction.on('change',function(){
    //Do stuff with your selected features here
}
person Danny Hoek    schedule 08.06.2014
comment
Благодаря, +1. Знаете ли защо събитието за промяна не се изпраща автоматично всеки път, когато функция е (не)избрана?? - person Pierre Henry; 24.09.2014

Ето едно решение, което може да е по-интуитивно от това на Дани и също така изглежда „официалният“ начин, вижте този проблем в GitHub на ol3.

Просто добавете слушателя към колекцията от избрани функции:

    mySelectInteraction.getFeatures().on('change:length', function(e) {
        if (e.target.getArray().length === 0) {
            alert("no selected feature");
        } else {
            var feature = e.target.item(0);
            alert(feature.getId()); //or do something better with the feature !
        }
    });
person Pierre Henry    schedule 24.09.2014
comment
Както бе споменато в проблема с GitHub, можете също да се абонирате за събитията „добавяне“ и „премахване“ в колекцията от функции. - person John Galambos; 06.02.2015
comment
Можете да използвате e.target.getLength() вместо e.target.getArray().length - person congusbongus; 02.06.2015

Искате да използвате манипулатора на събития featureselected:

Този пример е на векторен слой:

featuresLayer.events.on({
    'featureselected': function (e) {
        console.log(e);
    }
});
person Sam    schedule 07.05.2014
comment
това openlayers 3 ли е? събития не е дефинирано. - person Poul K. Sørensen; 09.05.2014