Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Sun 12 April 2015 17:18

alexlionnel
Juste Inscrit !
Date d'inscription: 12 Apr 2015
Messages: 4

openlayes 3 , wfs , geoserver

Salut à tous. J'ai besoin d'aide pour afficher des données wfs provenant de geoserver sur openlayers 3. J'ai utilisé le code provenant du site officiel openlayers 3, en adaptant l'url. Tous s'affiche correctement mais la couche wfs ne s'affiche pas.

Code:

                                           var vectorSource = new ol.source.ServerVector({
                        format: new ol.format.GeoJSON(),
                        loader: function(extent, resolution, projection) {
                                var url = 'http://localhost:8086/geoserver/wfs?service=WFS&' +
                                 'version=1.1.0&request=GetFeature&typename=stat_datasource:afrique&' +
                                 'outputFormat=text/javascript&format_options=callback:loadFeatures' +
                                 '&srsname=EPSG:4326&bbox=' + extent.join(',') + ',EPSG:4326';
                                $.ajax({
                                    url: url,
                                    dataType: 'jsonp'
                                });
                            },
                             strategy: ol.loadingstrategy.createTile(new ol.tilegrid.XYZ({
                              maxZoom: 19
                             })),
                             projection: 'EPSG:4326'
                     });

                    var loadFeatures = function(response) {
                      vectorSource.addFeatures(vectorSource.readFeatures(response));
                     };

                    var vector = new ol.layer.Vector({
                      source: vectorSource,
                      style: new ol.style.Style({
                        stroke: new ol.style.Stroke({
                          color: 'rgba(0, 0, 255, 1.0)',
                          width: 2
                        })
                      })
                    });

                    

                    var map = new ol.Map({
                      layers: [vector],
                      target: document.getElementById('map'),
                      view: new ol.View({
                        projection: 'EPSG:4326',
                        center:[11.49869,3.85888],
                        zoom:5
                      })
                    });
                    
                    map.addControl(new ol.control.ScaleLine());
                    map.addControl(new ol.control.MousePosition());
                    map.addControl(new ol.control.FullScreen());
                    map.addControl(new ol.control.ZoomSlider());

Merci d'avance.

Hors ligne

 

#2 Mon 13 April 2015 17:22

alexlionnel
Juste Inscrit !
Date d'inscription: 12 Apr 2015
Messages: 4

Re: openlayes 3 , wfs , geoserver

Salut. Après des nuits blanches j'ai finalement pu résoudre mon problème. Voici mon code final pour ceux que cela intéresse.

Code:

var vectorLoaderAfrique, loadFeaturesAfrique, vectorSourceAfrique, serverVectorAfrique;

vectorLoaderAfrique = function(extent, resolution, projection) {
                        var url = 'http://localhost:8086/geoserver/wfs?service=WFS&' +
                           'version=1.1.0&request=GetFeature&typename=stat_workspace:afrique&' +
                           'outputFormat=text/javascript&format_options=callback:loadFeaturesAfrique' +
                           '&srsname=EPSG:4326';
                           $.ajax({
                              url: url,
                              dataType: 'jsonp'
                           });
                    };
                    
                    vectorSourceAfrique = new ol.source.ServerVector({
                        format: new ol.format.GeoJSON(),
                        loader: vectorLoaderAfrique,
                        strategy: ol.loadingstrategy.createTile(new ol.tilegrid.XYZ({
                            maxZoom: 19
                        }))
                    });
                    
                    loadFeaturesAfrique = function(response) {
                        var features = vectorSourceAfrique.readFeatures(response);
                        vectorSourceAfrique.addFeatures(features);
                        
                    };
                    
                    var fill = new ol.style.Fill({
                        color: 'rgba(255,120,4,0.4)'
                    });    
                    
                    serverVectorAfrique = new ol.layer.Vector({
                        source: vectorSourceAfrique,
                        style: new ol.style.Style({
                            stroke: new ol.style.Stroke({color: 'red', width: 2}),
                            fill: fill
                        })
                    });
                    
                    /*Couche Region*/
                
                    
                    
                    var center = ol.proj.transform([-72.6, 41.7], 'EPSG:4326', 'EPSG:3857');
                        var view = new ol.View({
                        center: center,
                        zoom: 12
                    });
                    var map = new ol.Map({
                        target: 'map',
                        layers: [serverVectorAfrique],
                        view: new ol.View({
                            projection: 'EPSG:4326',
                            center:[11.49869,3.85888],
                            zoom:5
                        })
                  });
                  
                    map.addControl(new ol.control.ScaleLine());
                    map.addControl(new ol.control.MousePosition());
                    map.addControl(new ol.control.FullScreen());
                    map.addControl(new ol.control.ZoomSlider());

Je rappelle que j'utilise geoserver sur le port 8086, mon espace de travail est stat_workspace et la couche affichée est afrique.
Il  faudra au préalable ajouter les lignes suivantes dans le fichier web.xml de geoserver car le paramètre "outputFormat=text/javascript" de l'url est désactivé par défaut.

Code:

<context-param>
    <param-name>ENABLE_JSONP</param-name>
    <param-value>true</param-value>
  </context-param>

Hors ligne

 

#3 Thu 16 April 2015 12:31

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11766
Site web

Re: openlayes 3 , wfs , geoserver

Bonjour,

Vous aurez peut-être un peu plus de succès ici.

Bruno

Hors ligne

 

Pied de page des forums

Powered by FluxBB