我已经将一些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)
    }
});

09-25 18:19