我目前正在做一个涉及 OpenLayers 的概念证明,但我遇到了一个问题。
我按照这个官方示例尝试加载带有栅格和 WFS 图层的地图:http: //openlayers.org/en/latest/examples/vector-wfs.html
我可以使这个示例与 EPSG:4326 一起正常工作,我采用完全相同的代码,唯一改变的是:
- vectorSource.url = 使用我的 WFS
- raster.Source = OMS 而不是 BingMaps
- EPSG:4326 而不是样本中的 EPSG:3857
这是 JavaScript 代码:
var vectorSource = new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: function (extent) {
return 'http://localhost:8090/geoserver/ANF/ows?service=WFS&' +
'version=1.1.0&request=GetFeature&typename=ANF:PARC_BIODEM_SP&' +
'outputFormat=application/json&srsname=EPSG:4326&' +
'bbox=' + extent.join(',') + ',EPSG:4326';
},
strategy: ol.loadingstrategy.bbox
});
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 raster = new ol.layer.Tile({
source: new ol.source.OSM()
});
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
view: new ol.View({
center: [6.13, 49.845],
projection: 'EPSG:4326',
minZoom: 10,
maxZoom: 28,
zoom: 10
})
});
现在,我想在 EPSG:2169 中显示地图。
当我将新投影设置为 WFS 图层 (vectorSource) 时,它不再在地图上显示它。当我将新投影设置为地图视图本身时,HTML 页面保持白色,并且调试器显示错误:“ol.js:68 Uncaught TypeError: Cannot read property 'H' of undefined”
这是我想要的 JavaScript 代码,但这不起作用:
var vectorSource = new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: function (extent) {
return 'http://localhost:8090/geoserver/ANF/ows?service=WFS&' +
'version=1.1.0&request=GetFeature&typename=ANF:PARC_BIODEM_SP&' +
'outputFormat=application/json&srsname=EPSG:2169&' +
'bbox=' + extent.join(',') + ',EPSG:2169';
},
strategy: ol.loadingstrategy.bbox
});
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 raster = new ol.layer.Tile({
source: new ol.source.OSM()
});
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
view: new ol.View({
center: [6.13, 49.845],
projection: 'EPSG:2169',
minZoom: 10,
maxZoom: 28,
zoom: 10
})
});
我的 WFS 层来自 GeoServer,数据来自 Oracle 数据库,我确信这些数据在 EPSG:2169 中很好用。GeoServer 说本机 SRC 是 EPSG:2169,OpenLayers 预览(总是来自 GeoServer)很好地显示了该层。
知道为什么我的 WFS 在 EPSG:2169(OpenLayers 预览)中的 GeoServer 看起来运行良好,但在我的 OpenLayers 网页中却没有?我错过了什么吗?
非常感谢 !