javascript - 如何从 geoJson 加载中获取特征?

标签 javascript openlayers-3

我已经将一些 GeoJson 加载到 openlayers 3 矢量图层中

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)
    }
});

关于javascript - 如何从 geoJson 加载中获取特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38146603/

相关文章:

javascript - 点击Open Layer中的图层时的回调

Ruby on Rails 5 中的 Javascript 错误 "Uncaught TypeError: element.popover is not a function"

javascript - 如何通过单击一次销毁命名的 jquery-styles?

javascript - 如何在 Amchar 4 中禁用类别轴上标签的自动隐藏?

javascript向导/助手插件

openlayers-3 - 如果文本标签适合其几何图形,则仅将 ol.style.Text 打印到多边形

javascript - 当区域重复时如何正确从 Open Layers v4.2、API 获取坐标

javascript - webpack 和 terser 在缩小的输出中泄漏源文件名

javascript - requestAnimationFrame(...paramList...) 有什么好处?

angularjs - 错误类型错误 : Cannot read property 'Point' of undefined, openlayers 3 & jsts - 服务器端