Comment puis-je utiliser WFS de Geoserver avec OpenLayers 3?

8

J'ai essayé avec différentes configurations et formats, mais sans succès.

Avec firebug, je peux voir que les données json sont chargées, mais rien n'apparaît sur la carte.

Quelqu'un at-il de l'expérience avec geoserver et wfs dans openlayers 3?

var layer_ojd_vector = new ol.layer.Vector({
 source: new ol.source.Vector({
  parser: new ol.parser.GeoJSON(),
  url: http://SERVER:8080/geoserver/NS/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=NS:LAYER&maxFeatures=50&outputFormat=json
 }),
 style: new ol.style.Style({rules: [
  new ol.style.Rule({
   filter: 'geometryType("point")',
   symbolizers: [
     new ol.style.Shape({
       fillColor: '#013',
       size: 40
     })
   ]
 })
]})  
});
Trond Thorbjørnsen
la source

Réponses:

3

J'ai vu cette réponse un peu ici.

Vous devez exécuter le fichier HTML à partir d'un serveur Web et y accéder par:

SERVEUR: 8080 / geoserver / index.html

ou la vôtre est configurée.

Vous ne pouvez pas simplement double-cliquer sur le fichier HTML et afficher la couche WFS.

ianbroad
la source
Le fichier avec ce javascript est accessible via un serveur web.
Trond Thorbjørnsen
D'ACCORD! Maintenant je comprends: je ne peux pas accéder aux données wfs à partir d'un autre serveur web, je dois avoir le fichier html sur le serveur web geoserver.
Trond Thorbjørnsen
4
@GISer "J'ai vu beaucoup de réponses à cette question ici." Vraiment? C'est le seul article que j'ai vu qui cible spécifiquement OL3. Cela ne me dérangerait pas de voir une meilleure documentation à ce sujet, car la documentation OL3 est toujours en cours de développement.
Kyle
1
Cela n'a pas de sens. Voulez-vous dire si vous avez des données GeoJSON distantes qui doivent être exécutées sur le même serveur qui sert la carte? Si vous voyez certains des exemples d'OpenLayers sur leur site Web, les données spatiales ne doivent pas nécessairement résider sur le même serveur que le serveur de carte affichant les données.
user3657279
3

Je suis d'accord avec Kyle. Même un an plus tard, il m'a fallu un certain temps pour trouver de bons exemples avec des explications qui peuvent être facilement reproduites.

J'aime bien les exemples du «livre des openlayers 3». Malheureusement, je n'ai pas accès au livre lui-même mais je pense qu'il est bien écrit à en juger par les exemples.

Cet exemple est pour ol 3.4

http://acanimal.github.io/thebookofopenlayers3/chapter03_07_query_wfs.html

J'ai eu quelques problèmes pour répliquer l'exemple maître ol 3.5 vector-wfs à partir de la page d'exemples openlayers. Ces problèmes sont probablement résolus maintenant.

http://openlayers.org/en/master/examples/vector-wfs.html

J'ai créé trois jsfiddle pour démontrer les appels ol 3.5.0 via AJAX pour ol.format.GeoJSON (JSON et JSONP) ainsi que ol.format.WFS.

WFS (l'accès CORS doit être activé sur le serveur Web, par exemple pour Apache Tomcat )

http://jsfiddle.net/goldrydigital/9d3jzpna/

JSON (l'accès CORS doit être activé sur le serveur Web, par exemple pour Apache Tomcat )

http://jsfiddle.net/goldrydigital/ucspgvx0/

JSONP (JSONP doit être activé dans Geoserver )

http://jsfiddle.net/goldrydigital/08zzh9n9/

Dennis Bauszus
la source
Eh bien, la réponse est venue deux ans après la réponse acceptée, et la réponse acceptée était correcte dans la mesure où elle allait. Mais c'est beaucoup plus utile.
Auspex
0

Je pense que ce dont vous avez besoin est le suivant:
Référence de l'API de configuration REST
Avec REST, vous pouvez appeler des données entre des serveurs (ou entre, par exemple, Apache sur le port 80 et geoserver sur le port 8080 s'il s'agit du même serveur).

António Cabral
la source