我有一些GeoJson加载到openlayers 3矢量图层
load
我想使用
运行该源中的所有功能 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];
}
});
然而它从不调用我的回调,如果我尝试getFeatures(),我会得到一个空数组。但它渲染得很好所以我知道数据已加载。我甚至尝试在超时后的5秒内完成,以确保它已被加载和解析。
我做错了什么?
答案 0 :(得分:2)
在您的功能添加(AJAX)到源时收听:
countriesLayer.getSource().on('addfeature', function() {
// process further
});
// or just once
countriesLayer.getSource().once('addfeature', function() {
// process further
});
答案 1 :(得分:2)
这似乎有效:
countriesLayer.getSource().on("change", function(ev) {
if( countriesLayer.getSource().getState() === "ready" ) {
console.log(countriesLayer.getSource().getFeatures().length)
}
});