Javascript 在选择上获取要素id

Javascript 在选择上获取要素id,javascript,openlayers-3,Javascript,Openlayers 3,获取从地图中选择的要素的id时遇到问题。下面是我如何添加功能的示例: var mylayer = map.getLayer('mylayerid'); var layersrc = mylayer.getSource(); var feature = new ol.Feature(new ol.geom.Point([0, 0])); feature.setId(54); layersrc.addFeature(feature); var selectSingleClick = new o

获取从地图中选择的要素的id时遇到问题。下面是我如何添加功能的示例:

var mylayer = map.getLayer('mylayerid');
var layersrc = mylayer.getSource();

var feature = new ol.Feature(new ol.geom.Point([0, 0]));
feature.setId(54);

layersrc.addFeature(feature);
var selectSingleClick = new ol.interaction.Select();
    selectSingleClick.on('select', function(e) {
        // tried many things with e but can't get id of selected feature
    });
    map.addInteraction(selectSingleClick);
以下是我选择功能的设置:

var mylayer = map.getLayer('mylayerid');
var layersrc = mylayer.getSource();

var feature = new ol.Feature(new ol.geom.Point([0, 0]));
feature.setId(54);

layersrc.addFeature(feature);
var selectSingleClick = new ol.interaction.Select();
    selectSingleClick.on('select', function(e) {
        // tried many things with e but can't get id of selected feature
    });
    map.addInteraction(selectSingleClick);

是否有合适的方法来捕获功能id?谢谢

我找到了一种收集id的方法,尽管它有点复杂。我跟随pointermove事件不断收集鼠标的位置。然后,当点击地图时,会捕捉到鼠标在那一瞬间的位置,我们现在能够在该像素位置循环浏览每个功能

map.on('singleclick', function(evt) {
    var pixel = map.getPixelFromCoordinate(evt.coordinate);
    map.forEachFeatureAtPixel(pixel, function(feature) {
        console.log(feature.getId()); // id of selected feature
    });
});

如果您在该位置有多个功能,您将获得多个功能。希望这能帮助其他有此问题的人。

鼠标位置也可以在单击事件时获得,因此您不需要听指针移动来收集它。尝试在click回调方法中添加
browserEvent
参数,并从中获取坐标。