如何在打开的图层3中动态获取所选的要素属性?

时间:2016-05-22 16:41:53

标签: javascript jquery openlayers-3

我在地图中有两种类型,即Point和Polygon。每种类型都有自己的属性,如id,doorNo,name等。我的功能列表由;创建;

var features = new ol.format.GeoJSON().readFeatures(geojsonObject, {
    featureProjection: 'EPSG:3857'
});

如果我通过索引调用功能,我可以使用get(' property_name')函数获取属性。例如;

features[0].getGeometry().getType() == "Point" // check this feature is Point or not
$doorNo = features[$index].get("doorNo");//this is also works

但同时我的地图上有一个selectInteraction。当我选择一个功能时,我想通过点击事件按钮获得所有这些相同的属性。要做到这一点,我写这个;

$('#btnSelected').on('click', function () {
        if (selectInteraction) {
            // use the features Collection to detect when a feature is selected,
            // the collection will emit the add event
            var selectedFeatures = selectInteraction.getFeatures();
            console.log("Length: " + selectedFeatures.getLength());// this is works
            console.log("Coordinates: " + selectedFeatures[0].getGeometry().getCoordinates());//THIS GAVES ME ERROR
        }else
            console.log('there is no selected feature.');
    });

因此,在点击事件中我想写入控制台的所有要素属性,但即使selectedFeatures.length给我正确的数字,我也无法获得任何属性。 我哪里错了?

enter image description here

注意:在地图中,选择蓝色一点。并且前两个未被捕获的错误与此问题无关。

1 个答案:

答案 0 :(得分:3)

getFeatures方法返回ol.Collection,而不是数组。

ol.Collection不支持使用JS括号表示法检索其项目。而不是selectedFeatures[0]selectedFeatures.item(0)