openlayers 4获取ol.layer.Vector的功能

时间:2018-01-05 11:40:14

标签: 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 = 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>');
}

kml图层在地图上正确显示,正如我在代码中所提到的,当我使用getFeatures函数时,它没有得到任何东西。

任何帮助都会非常感激。

P.S。我会试着睡一会儿,所以我会在几个小时后回来。

2 个答案:

答案 0 :(得分:1)

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

getFeatures() is empty

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

答案 1 :(得分:0)

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