[GIS] WFS layer not showing in openlayers

geoserveropenlayers

I am trying to show layer from Geoserver as WFS with OpenLayers, but when I open http://localhost:8080/geoserver/www/Geoinformatika2/index.html, it gives me only OSM map as a base, but there is no polygon that is defined in layer

var osnova = new ol.layer.Tile({
          title: 'OSM',
          type: 'base',
          visible: true,
          source: new ol.source.OSM({
            layer: 'OSM'
        })});   
var logori = new ol.layer.Vector({
          url: 'http://localhost:8080/geoserver/mydb/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=mydb:geoserver&maxFeatures&outputFormat=application/json',

format: new ol.format.GeoJSON()
        })
});

var map = new ol.Map({
  target: 'map',
  controls: ol.control.defaults().extend([
    new ol.control.ScaleLine(),
    new ol.control.ZoomSlider()
  ]),
  layers: [
    new ol.layer.Group({
      'title':'Osnova',
      layers:[ osnova ]}),

    new ol.layer.Group({
      title:'Adrse',
      layers:[logori]})
    ],
  view: new ol.View({
    center: ol.proj.fromLonLat([17.86249816417694, 44.60232779122055]),
    zoom: 8
  })
});

as the response I get

    {"type":"FeatureCollection","totalFeatures":1,"features":[{"type":"Feature","id":"geoserver.2","geometry"
:{"type":"Polygon","coordinates":[[[6414273.98269,5015670.1361],[6414000,5015000.1361],[6416273.98269
,5017670.1361],[6414273.98269,5015670.1361]]]},"geometry_name":"koordinate","properties":{"stratisteid"
:2,"naziv":"s","tip":"logor","zrtve_broj":6000,"tipgeometrije":"Polygon"}}],"crs":{"type":"name"
,"properties":{"name":"urn:ogc:def:crs:EPSG::31276"}}}

If I try to get it like this

var osnova = new ol.layer.Tile({
          title: 'OSM',
          type: 'base',
          visible: true,
          source: new ol.source.OSM({
            layer: 'OSM'
        })});   
var logori = new ol.layer.Vector({
        source: new ol.source.Vector({
            format:new ol.format.WFS({
                version:"1.1.0",
                url: "http://localhost:8080/geoserver/mydb/wfs",
                featurePrefix: "mydb",
                featureType: "mydb:geoserver",
                featureNS: "http://localhost:8080/geoserver/mydb",
                geometryName: "koordinate",
                srsName: "EPSG:4326"
            })
        })
});

var map = new ol.Map({
  target: 'map',
  controls: ol.control.defaults().extend([
    new ol.control.ScaleLine(),
    new ol.control.ZoomSlider()
  ]),
  layers: [
    new ol.layer.Group({
      'title':'Osnova',
      layers:[ osnova ]}),

    new ol.layer.Group({
      title:'Adrse',
      layers:[logori]})
    ],
  view: new ol.View({
    center: ol.proj.fromLonLat([17.86249816417694, 44.60232779122055]),
    zoom: 10
  })
});

it also gives me the only OSM map, but I can't see GET request for WFS layer. I can't figure what is wrong
URI of workspace is http://localhost:8080/geoserver/mydb
layer name is mydb:geoserver
if I try to open layer from the link: http://demo.opengeo.org/geoserver/topp/ows?service=wfs&version=2.0.0&request=GetFeature&typeNames=topp:states&maxFeatures&outputFormat=application/json
it shows it with no problem, so it looks like openlayers is not getting layer from geoserver

Best Answer

Your data seems to be stored in epsg:31276 (based on the response you do get) but you make no attempt to reproject it into the map projection (epsg:3857) in the first case. So it probably is drawn, just somewhere away from where you expect it.

In the second case, you request the data in lon/lat (epsg:4326) and again don't reproject it so I suspect it is drawn down near Null Island.

I think that if you take out the SRSName line from your WFS request, OL3 will correctly request the data and display it for you.