Javascript openlayers 4从ol.layer.Vector获取功能

Javascript openlayers 4从ol.layer.Vector获取功能,javascript,openlayers,Javascript,Openlayers,我是OpenLayers的新手,所以我在这里有点迷路了。 我试图从kml向量层获取所有功能,但我一直无法做到这一点。我只是不明白我做错了什么 这是我的密码: var vector2 = new ol.layer.Vector({ source: new ol.source.Vector({ url: './energeticos.kml', format: new ol.format.KML() }) }); var features = vec

我是OpenLayers的新手,所以我在这里有点迷路了。 我试图从kml向量层获取所有功能,但我一直无法做到这一点。我只是不明白我做错了什么

这是我的密码:

var vector2 = new ol.layer.Vector({
    source: new ol.source.Vector({
        url: './energeticos.kml',
        format: new ol.format.KML()
    })
});

var features = vector2.getSource().getFeatures();
alert(features.length); //this alerts '0', but there's more than 50 features!!

for (var i in features) {
    var feature = features[i];
    var featureName = feature.get('name');
    $("#containerLeft").append('<li>' + featureName + '</li>');
}
var vector2=新ol.layer.Vector({
来源:新ol.source.Vector({
url:“./energeticos.kml”,
格式:新建ol.format.KML()
})
});
var features=vector2.getSource().getFeatures();
警报(特征、长度)//此警报为“0”,但有50多个功能!!
用于(功能中的var i){
var特征=特征[i];
var featureName=feature.get('name');
$(“#containerLeft”).append(“
  • ”+featureName+”
  • ”); }
    kml层正确地显示在地图上,正如代码中提到的,当我使用getFeatures函数时,它没有得到任何东西

    任何帮助都将不胜感激


    顺便说一句,我会尽量睡一觉,几小时后回来

    我刚刚在这里找到了一个解决方案:


    我必须添加一个事件侦听器,因为KML文件的加载将以异步方式进行,正如答案中所解释的那样。

    您可以在控制台上单独键入
    vector2.getSource().getFeatures()
    。似乎呈现KML是异步的。

    不用说,for循环没有任何作用,因为“features”数组显然是空的。我试图做的是在地图之外创建超链接,它将把地图放在一个特定多边形的中心,并显示相应的弹出窗口。现在,单击某个区域/多边形时,您可以看到弹出窗口。任何人有什么线索吗?你能看到地图上的特征吗?是的,我能看到地图上的所有特征,我也能在点击时显示一个包含每个特征信息的弹出窗口。如果你在地图上看到该函数时调用它,它会返回特征。