Pie*_*nry 9

这个解决方案可能比Danny更直观,而且似乎也是"官方"方式,请参阅ol3的GitHub上的这个问题.

只需将监听器添加到所选功能的集合中:

    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 !
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 正如GitHub问题中所述,您还可以订阅功能集合上的"添加"和"删除"事件. (3认同)

Dan*_*oek 2

当地图上触发单击事件时,您可以将预合成事件绑定到图层。从这里您可以在您选择的交互上调度更改事件。

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

yourSelectInteraction.on('change',function(){
    //Do stuff with your selected features here
}
Run Code Online (Sandbox Code Playgroud)