使用TurfJS“合并”功能在OpenLayers 3中添加GeoJSON图层

问题描述:

我正在使用Openlayers 3并希望添加一个图层,其中TurfJS函数“合并”的答案应该是源代码。 直接在OpenLayers 3中添加GeoJSON层并不成问题,并且工作正常。 但是,当我加载变量中的GeoJSON文件使用turf.merge(源),这不能再添加到一个图层。 我已经尝试turf.merge的答案转换中和的FeatureCollection添加此作为层的源,但是这也没有工作使用TurfJS“合并”功能在OpenLayers 3中添加GeoJSON图层

//define source (contains Polygons) 
     var source = new ol.source.Vector({ 
     url: 'geb03_f_source.geojson', 
     format: new ol.format.GeoJSON({ 
      }) 
    }); 

//Merge source 
var merged = turf.merge(source); 

//define layer 
var vectorLayer = new ol.layer.Vector({ 
    source: merged, 
    projection: 'EPSG:3857' 
}); 

//add layer to map 
map.addLayer(vectorLayer); 

我看到这样的问题:在加载页面时,该GeoJSON的 - 文件虽然它应该没有加载。

但就加载和显示文件的工作原理:利用草皮合并时

var source = new ol.source.Vector({ 
    url: 'geb03_f_source.geojson', 
    format: new ol.format.GeoJSON({ 
     }) 
}); 

var vectorLayer = new ol.layer.Vector({ 
    source: source, 
    projection: 'EPSG:3857' 
}); 

map.addLayer(vectorLayer); 

或许真的与GeoJSON的-Fomat是错的? 我很高兴为您提供帮助!

+0

控制台显示一个“类型错误:t.features是不确定的”。与加载的GeoJSON功能的格式似乎错误... – user2010988

+0

不要忘记提供反馈。你有你的答案。 –

Turf JS使用GeoJSON作为输入和输出,您提供了一个OpenLayers矢量源对象作为输入。所以你需要改变它。

一种选择是使用ol.source.Vector代替urlformatloader选项,将它添加到源之前直接合并GeoJSON的多边形。

另一种选择是将醇源重新转换到GeoJSON的,是这样的:

var geoJSONFormat = new ol.format.GeoJSON({}); 

var source = new ol.source.Vector({ 
    url: 'geb03_f_source.geojson', 
    format: geoJSONFormat 
}); 

var mergedSource = new ol.source.Vector({}); 

source.on('change', function(){ 
    var sourceJSON = geoJSONFormat.writeFeaturesObject(source.getFeatures()); 
    var merged = turf.merge(sourceJSON); 
    var mergedOLFeature = geoJSONFormat.readFeature(merged); 
    mergedSource.clear(); 
    mergedSource.addFeature(mergedOLFeature); 
});