我是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 函数时,它不会得到任何内容。
任何帮助将不胜感激。
附言我会试着睡一觉,所以我会在几个小时后回来。
我刚刚在这里找到了一个解决方案:
getFeatures(( 为空
我不得不添加一个事件侦听器,因为 KML 文件的加载将以异步方式进行,正如该答案中所解释的那样。
您可以在
控制台上单独键入vector2.getSource().getFeatures()
。似乎渲染 KML 是异步的。