使用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是错的? 我很高兴为您提供帮助!
答
Turf JS使用GeoJSON作为输入和输出,您提供了一个OpenLayers矢量源对象作为输入。所以你需要改变它。
一种选择是使用ol.source.Vector
代替url
和format
的loader
选项,将它添加到源之前直接合并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);
});
控制台显示一个“类型错误:t.features是不确定的”。与加载的GeoJSON功能的格式似乎错误... – user2010988
不要忘记提供反馈。你有你的答案。 –