Wie kann ich WFS von Geoserver mit OpenLayers 3 verwenden?

8

Ich habe es mit verschiedenen Setups und Formaten versucht, aber keinen Erfolg.

Mit Firebug kann ich sehen, dass die JSON-Daten geladen sind, aber auf der Karte wird nichts angezeigt.

Hat jemand Erfahrung mit Geoserver und wfs in 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
quelle

Antworten:

3

Ich habe gesehen, dass dies hier ziemlich oft beantwortet wurde.

Sie müssen die HTML-Datei von einem Webserver ausführen und auf Folgendes zugreifen:

SERVER: 8080 / geoserver / index.html

oder wie auch immer deins eingerichtet ist.

Sie können nicht einfach auf die HTML-Datei doppelklicken und die WFS-Ebene anzeigen.

ianbroad
quelle
Auf die Datei mit diesem Javascript wird über einen Webserver zugegriffen.
Trond Thorbjørnsen
OK! Jetzt verstehe ich: Ich kann nicht von einem anderen Webserver auf die wfs-Daten zugreifen. Ich muss die HTML-Datei auf dem Geoserver-Webserver haben.
Trond Thorbjørnsen
4
@GISer "Ich habe gesehen, dass dies hier ziemlich oft beantwortet wurde." "Ja wirklich?" Dies ist der einzige Beitrag, den ich gesehen habe und der speziell auf OL3 abzielt. Ich hätte nichts dagegen, eine bessere Dokumentation dazu zu sehen, da die OL3-Dokumentation noch in Arbeit ist.
Kyle
1
Das macht keinen Sinn. Wollen Sie damit sagen, dass Sie Remote-GeoJSON-Daten auf demselben Server ausführen müssen, der die Karte bedient? Wenn Sie einige der OpenLayers-Beispiele auf ihrer Website sehen, müssen sich die räumlichen Daten nicht auf demselben Server befinden wie der Kartenserver, auf dem die Daten angezeigt werden.
user3657279
3

Ich stimme Kyle zu. Selbst ein Jahr später habe ich eine Weile gebraucht, um gute Beispiele mit Erklärungen zu finden, die sich leicht reproduzieren lassen.

Ich mag die Beispiele aus dem 'Buch der Openlayers 3'. Leider habe ich keinen Zugang zum Buch selbst, aber ich glaube, dass es nach den Beispielen gut geschrieben ist.

Dieses Beispiel ist für ol 3.4

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

Ich hatte einige Probleme beim Replizieren des alten 3.5-Vektor-WFS-Master-Beispiels von der OpenLayer-Beispielseite. Diese Probleme sind wahrscheinlich inzwischen behoben.

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

Ich habe drei jsfiddle erstellt, um ol 3.5.0-Aufrufe über AJAX für ol.format.GeoJSON (JSON und JSONP) sowie ol.format.WFS zu demonstrieren.

WFS (CORS-Zugriff muss auf dem Webserver aktiviert sein, z. B. für Apache Tomcat )

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

JSON (CORS-Zugriff muss auf dem Webserver aktiviert sein, z. B. für Apache Tomcat )

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

JSONP (JSONP muss in Geoserver aktiviert sein )

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

Dennis Bauszus
quelle
Nun, die Antwort kam zwei Jahre nach der akzeptierten Antwort, und die akzeptierte Antwort war soweit richtig. Das ist aber viel nützlicher.
Auspex
0

Ich denke, was Sie brauchen, ist Folgendes :
REST-Konfigurations-API-Referenz
Mit REST können Sie Daten zwischen Servern aufrufen (oder zwischen z. B. Apache auf Port 80 und Geoserver in Port 8080, wenn es sich um denselben Server handelt).

António Cabral
quelle