我已经将一些GeoJson加载到openlayers 3 vector 层中
var countriesLayer = new ol.layer.Vector({
source: new ol.source.Vector({
url: '/data/countriesandstates.geojson',
format: new ol.format.GeoJSON()
}),
style: function(feature, resolution) {
countriesLayerTextStyle.getText().setText(resolution < 5000 ? feature.get('name') : '');
return [countriesLayerStyle, countriesLayerTextStyle];
}
});
我想使用以下命令遍历该源代码中的所有功能
countriesLayer.getSource().forEachFeature(...);
但是,它永远不会调用我的回调,如果我尝试
getFeatures()
,我会得到一个空数组。但是它呈现得很好,所以我知道数据已加载。我什至尝试在5秒后进行超时以确保已加载并解析了它。我究竟做错了什么?
最佳答案
这似乎可行:
countriesLayer.getSource().on("change", function(ev) {
if( countriesLayer.getSource().getState() === "ready" ) {
console.log(countriesLayer.getSource().getFeatures().length)
}
});