我是OpenLayers3的入门者,并且是该网站的新手,所以这是我的第一个问题,希望我可以正确地放在此处。对我不起作用的是在OpenLayers3中打开一个(未平铺的)WFS层。我使用开放层站点的WFS示例作为基础(也是因为它似乎是一个相对简单的代码)。我试图在我的教科书OpenLayers3中,在开放层站点上,与Google一起在此站点上找到解决方案,但是没有成功。
在我以OpenLayers为例创建的代码下面,但现在是另一个WFS,因为我认为应该打开该WFS。我究竟做错了什么?

 // working example from: http://openlayers.org/en/v3.13.1/examples/vector-wfs.html

  var vectorSource = new ol.source.Vector({
    format: new ol.format.GeoJSON(),
    url: function(extent) {
      return 'http://demo.boundlessgeo.com/geoserver/wfs?service=WFS&' +
          'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +
          'outputFormat=application/json&srsname=EPSG:3857&' +
          'bbox=' + extent.join(',') + ',EPSG:3857';
        },
    strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
      maxZoom: 19
    }))
  });


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


//基于上述示例代码的无效代码

var vectorSource = new ol.source.Vector({
    format: new ol.format.GeoJSON(),
    url: function(extent) {
      return 'https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&' +
          'version=1.1.0&request=GetFeature&typename=bestuurlijkegrenzen:gemeenten&' +
          'outputFormat=application/json&srsname=EPSG:28992&' +
          'bbox=' + extent.join(',') + ',EPSG:28992';

             },
    strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
      maxZoom: 19
    }))
  });


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

最佳答案

除非您提供完整的代码,否则我只能做出一些猜测。
您的两层具有不同的投影。我猜您将epsg:3857用于视图投影,因此从此范围使用坐标将返回0个要素。要尝试的第一件事是使用视图的投影向地理服务器请求您的图层。

var vectorSource = new ol.source.Vector({
    format: new ol.format.GeoJSON(),
    url: function(extent) {
      return 'https://geodata.nationaalgeoregister.nl/bestuurlijkegrenzen/wfs?service=WFS&' +
          'version=1.1.0&request=GetFeature&typename=bestuurlijkegrenzen:gemeenten&' +
          'outputFormat=application/json&srsname=EPSG:3857&' +
          'bbox=' + extent.join(',') + ',EPSG:3857';

             },
    strategy: ol.loadingstrategy.tile(ol.tilegrid.createXYZ({
      maxZoom: 19
    }))
  });


这将迫使geoserver在服务器端进行重新投影。
我建议先尝试上述方法,以确保这是您的情况。然后,您必须考虑是要在客户端还是在服务器端进行重新注入。

关于javascript - 无法使用OpenLayers 3站点中的WFS示例作为基础加载另一个WFS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35409506/

10-15 13:36