2015-10-17 1 views
1

J'utilise Openlayers 3 et je souhaite ajouter une couche, dans laquelle la réponse de la fonction TurfJS "merge" devrait être la source. Ajout d'un GeoJSON-Layer directement dans OpenLayers 3 n'est pas un problème et fonctionne bien. Mais quand je charge le fichier GeoJSON dans une variable et utilise turf.merge (source), cela ne peut plus être ajouté dans un calque. je l'ai déjà essayé de convertir la réponse de turf.merge dans un FeatureCollection et ajoutez cela comme la source de la couche, mais qui est aussi ne fonctionne pasAjout de couche GeoJSON dans OpenLayers 3 avec la fonction "merge" de TurfJS

//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); 

Le problème que je vois est que lors du chargement de la page, le GeoJSON-File n'est pas chargé bien qu'il devrait.

Mais le chargement et l'affichage du fichier fonctionne:

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); 

Peut-être quelque chose avec le GeoJSON-Fomat est erroné lors de l'utilisation gazons fusion? Je suis heureux pour toute aide!

+0

la console affiche un "TypeError: t.features est indéfinie". un bourrage avec le format de la fonction GeoJSON chargée semble ... – user2010988

+0

N'oubliez pas de donner votre avis. Vous avez votre réponse. –

Répondre

0

Turf JS utilise GeoJSON comme entrée et sortie, vous fournissez un objet source vectoriel OpenLayers en entrée. Donc vous devez changer cela.

Une option consiste à utiliser l'option loader de ol.source.Vector au lieu de url et format, fusionner directement les polygones GeoJSON avant de l'ajouter à la source.

Une autre option consiste à retransformer la source ol GeoJSON, quelque chose comme:

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); 
});