2015-10-17 96 views
1

我正在使用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

不要忘記提供反饋。你有你的答案。 –

回答

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); 
}); 
相關問題