我在地图中有两种类型,即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给我正确的数字,我也无法获得任何属性。 我哪里错了?
注意:在地图中,选择蓝色一点。并且前两个未被捕获的错误与此问题无关。
答案 0 :(得分:3)
getFeatures
方法返回ol.Collection
,而不是数组。
ol.Collection
不支持使用JS括号表示法检索其项目。而不是selectedFeatures[0]
做selectedFeatures.item(0)
。