我是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/