3

我目前正在做一个涉及 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 网页中却没有?我错过了什么吗?

非常感谢 !

4

0 回答 0