WFS Layer mit OpenLayers einbinden?
Ich möchte einen WFS-Layer vom GeoServer mithilfe von OL einbinden, dabei habe ich mich an das Beispiel von OpenLayers (vectorWFS) gehalten.
Mein Code sieht wie folgt aus (URLs wurden maskiert wegen GF):
<!DOCTYPE html> <html> <head> <title>WFS</title> <meta charset="UTF-8"> <link href="htt ps://openlayers.org/en/v4.6.4/css/ol.css" rel="stylesheet" type="text/css"> <script src="htt ps://openlayers.org/en/v4.6.4/build/ol.js"></script> </head> <body> <div id="map" class="map"></div> <script> var vectorSource = new ol.source.Vector({ format: new ol.format.GeoJSON(), url: function(extent) { return 'htt p://osmatrix.geog.uni-heidelberg.de/geoserver/' + 'wfs?version=1.1.0&request=GetFeature&typename=fdepasquale:fdepasquale_countries&maxFeatures=5000&' + 'outputFormat=application%2Fjson&srsname=EPSG:4326&' + 'bbox=' + extent.join(',') + ',EPSG:4326'; } }); 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({ center: [-8908887.277395891, 5381918.072437216], maxZoom: 19, zoom: 12 }) }); </script> </body> </html>
Leider bekomme ich keinen Layer angezeigt (Chrome) und die Konsole spuckt folgendes aus:
Uncaught SyntaxError: Unexpected token < in JSON at position 0at JSON.parse (<anonymous>)
at Lo (ol.js:473)
at Qq.k.Qa (ol.js:473)
at U.<anonymous> (ol.js:471)
Ich bin totaler Neuling und muss diese Aufgabe für die Uni absolvieren. Vielleicht weiß jemand, was ich falsch gemacht habe.
Die Zoom-Buttons von der Map werden übrigens angezeigt.
1 Antwort
Ich habe mir einmal die URL angeschaut, die du als Source aufrufst:
Der Server antwortet auf diese Anfrage mit einem Fehler:
java.lang.RuntimeException: java.io.IOException java.io.IOExceptionERROR: parse error - invalid geometry Hint: "POLYGON ((-�" <-- parse error at position 12 within geometry
Ich vermute, dass der Server eigentlich ein JSON-Objekt zurückgeben sollte. Da dies nicht der Fall ist, folgt ein Fehler. Überprüfe am besten nochmal die URL, die du zusammenbaust bzw. die URL-Parameter.
Ich werde mir das heute nochmal anschauen, gestern bin ich nicht dazu gekommen.
So sollte es nun richtig sein: https://jsfiddle.net/x2v69ytt/
Dein Fehler lag wohl darin, dem Property url eine Funktion zu übergeben. Wenn du so etwas machen möchtest, dann musst du wohl einen Custom Loader verwenden. Ein Beispiel: https://jsfiddle.net/nx8z6swv/
hab nun den link korrigiert: http://osmatrix.geog.uni-heidelberg.de/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typename=fdepasquale_countries&outputFormat=application%2Fjson&srsname=EPSG:4326&bbox=-181.800003051758,-90.8681716918945,181.800018310547,84.5022735595703,EPSG:4326
kein error wenn man ihn öffnet, kein error in der konsole, map wird jedoch trotzdem nicht angezeigt....