1

我正在使用 Openlayers 3 并想添加一个图层,其中 TurfJS 函数“合并”的答案应该是源。直接在 OpenLayers 3 中添加 GeoJSON-Layer 没有问题并且工作正常。但是当我将 GeoJSON-File 加载到变量中并使用 turf.merge(source) 时,不能再将其添加到图层中。我已经尝试将 turf.merge 的答案转换为 FeatureCollection 并将其添加为图层源,但这也不起作用

//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-File 没有加载,尽管它应该加载。

但只需加载和显示文件即可:

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 可能有问题?我为每一次帮助感到高兴!

4

1 回答 1

0

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

一种选择是使用loader选项 ofol.source.Vector而不是urland format,在将 GeoJSON 多边形添加到源之前直接合并它。

另一种选择是将 ol 源重新转换为 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);
});
于 2015-10-18T16:48:01.997 回答