Gis WFS图层未显示在地图上

Gis WFS图层未显示在地图上,gis,openlayers,openlayers-6,Gis,Openlayers,Openlayers 6,我使用openlayers 6。 我在地图上显示图层时遇到问题。 我以GML格式将图层加载为XML并尝试显示,但图层没有显示在地图上 以下是矢量定义: function createLayer(layer, strategy, extent, projection) { if (!strategy) strategy = allStrategy; let vsource = createSourceLayer(strategy, layer, extent, projectio

我使用openlayers 6。 我在地图上显示图层时遇到问题。 我以GML格式将图层加载为XML并尝试显示,但图层没有显示在地图上

以下是矢量定义:

function createLayer(layer, strategy, extent, projection) {

    if (!strategy) strategy = allStrategy;
    let vsource = createSourceLayer(strategy, layer, extent, projection);
    var vector = new VectorLayer({
        source: vsource,
        visible: true,
        style: new Style({
            image: new Icon({
                src: '/images/icon-alert-blue.png',
                size: [30, 30],
            })
        })
    });
    return vector;
}
function createSourceLayer(strategy, layer, extent, projection) {

    let url = "url resources";
    let vectorSource = new VectorSource({
        format: new WFS({
            gmlFormat: new GML({
                featureType: "WW_MONITOR",
                featureNS: "http://www.opengis.net/wfs",
                srsName: "EPSG:2039"
            })
        }),
        loader: function (extent, resolution, projection) { 
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url);
            xhr.onload = function () {
                if (xhr.status === 200) {
                    vectorSource.addFeatures(
                        vectorSource.getFormat().readFeatures(xhr.responseText, {
                            dataProjection: projection,
                            extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494]
                        })
                    );
                } else {
                    console.log("loader fail");
                }
            },
            xhr.send();
        },
        strategy: strategy
    });

    return vectorSource;
}
    map = new Map({
        layers: [baseLayer,layer],
        view: view,
        target: 'map',
    });
    view = new View({
        extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494],
        maxResolution: 80000,
        center: [201640.48440000002, 745082.902687],
        projection: israeliTM,
        zoom: 0
    });
以下是矢量源定义:

function createLayer(layer, strategy, extent, projection) {

    if (!strategy) strategy = allStrategy;
    let vsource = createSourceLayer(strategy, layer, extent, projection);
    var vector = new VectorLayer({
        source: vsource,
        visible: true,
        style: new Style({
            image: new Icon({
                src: '/images/icon-alert-blue.png',
                size: [30, 30],
            })
        })
    });
    return vector;
}
function createSourceLayer(strategy, layer, extent, projection) {

    let url = "url resources";
    let vectorSource = new VectorSource({
        format: new WFS({
            gmlFormat: new GML({
                featureType: "WW_MONITOR",
                featureNS: "http://www.opengis.net/wfs",
                srsName: "EPSG:2039"
            })
        }),
        loader: function (extent, resolution, projection) { 
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url);
            xhr.onload = function () {
                if (xhr.status === 200) {
                    vectorSource.addFeatures(
                        vectorSource.getFormat().readFeatures(xhr.responseText, {
                            dataProjection: projection,
                            extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494]
                        })
                    );
                } else {
                    console.log("loader fail");
                }
            },
            xhr.send();
        },
        strategy: strategy
    });

    return vectorSource;
}
    map = new Map({
        layers: [baseLayer,layer],
        view: view,
        target: 'map',
    });
    view = new View({
        extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494],
        maxResolution: 80000,
        center: [201640.48440000002, 745082.902687],
        projection: israeliTM,
        zoom: 0
    });
以下是地图定义:

function createLayer(layer, strategy, extent, projection) {

    if (!strategy) strategy = allStrategy;
    let vsource = createSourceLayer(strategy, layer, extent, projection);
    var vector = new VectorLayer({
        source: vsource,
        visible: true,
        style: new Style({
            image: new Icon({
                src: '/images/icon-alert-blue.png',
                size: [30, 30],
            })
        })
    });
    return vector;
}
function createSourceLayer(strategy, layer, extent, projection) {

    let url = "url resources";
    let vectorSource = new VectorSource({
        format: new WFS({
            gmlFormat: new GML({
                featureType: "WW_MONITOR",
                featureNS: "http://www.opengis.net/wfs",
                srsName: "EPSG:2039"
            })
        }),
        loader: function (extent, resolution, projection) { 
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url);
            xhr.onload = function () {
                if (xhr.status === 200) {
                    vectorSource.addFeatures(
                        vectorSource.getFormat().readFeatures(xhr.responseText, {
                            dataProjection: projection,
                            extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494]
                        })
                    );
                } else {
                    console.log("loader fail");
                }
            },
            xhr.send();
        },
        strategy: strategy
    });

    return vectorSource;
}
    map = new Map({
        layers: [baseLayer,layer],
        view: view,
        target: 'map',
    });
    view = new View({
        extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494],
        maxResolution: 80000,
        center: [201640.48440000002, 745082.902687],
        projection: israeliTM,
        zoom: 0
    });
以下是视图定义:

function createLayer(layer, strategy, extent, projection) {

    if (!strategy) strategy = allStrategy;
    let vsource = createSourceLayer(strategy, layer, extent, projection);
    var vector = new VectorLayer({
        source: vsource,
        visible: true,
        style: new Style({
            image: new Icon({
                src: '/images/icon-alert-blue.png',
                size: [30, 30],
            })
        })
    });
    return vector;
}
function createSourceLayer(strategy, layer, extent, projection) {

    let url = "url resources";
    let vectorSource = new VectorSource({
        format: new WFS({
            gmlFormat: new GML({
                featureType: "WW_MONITOR",
                featureNS: "http://www.opengis.net/wfs",
                srsName: "EPSG:2039"
            })
        }),
        loader: function (extent, resolution, projection) { 
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url);
            xhr.onload = function () {
                if (xhr.status === 200) {
                    vectorSource.addFeatures(
                        vectorSource.getFormat().readFeatures(xhr.responseText, {
                            dataProjection: projection,
                            extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494]
                        })
                    );
                } else {
                    console.log("loader fail");
                }
            },
            xhr.send();
        },
        strategy: strategy
    });

    return vectorSource;
}
    map = new Map({
        layers: [baseLayer,layer],
        view: view,
        target: 'map',
    });
    view = new View({
        extent: [195380.430213, 739554.42288, 207900.538587, 750611.382494],
        maxResolution: 80000,
        center: [201640.48440000002, 745082.902687],
        projection: israeliTM,
        zoom: 0
    });
更新:

下面是我从服务器获得的GML中的单个Feature的示例:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ns216630453="http://fdo.osgeo.org/schemas/feature/ns216630453"
    xmlns:wfs="http://www.opengis.net/wfs"
    xmlns:gml="http://www.opengis.net/gml">
    <!-- Feature 1 -->
    <gml:featureMember>
        <ns216630453:WW_MONITOR>
            <ns216630453:FeatId>1</ns216630453:FeatId>
            <ns216630453:Name>Donald garage</ns216630453:Name>
            <ns216630453:Street>Dundas str </ns216630453:Street>
            <ns216630453:Building>128</ns216630453:Building>
            <ns216630453:StreetCode>354</ns216630453:StreetCode>
            <ns216630453:FK_Category>11</ns216630453:FK_Category>
            <ns216630453:WaterUsing>27</ns216630453:WaterUsing>
            <ns216630453:Exceptions>0</ns216630453:Exceptions>
            <ns216630453:Geometry>
                <gml:Point>
                    <gml:coordinates>199480.000000,747711.000000</gml:coordinates>
                </gml:Point>
            </ns216630453:Geometry>
        </ns216630453:WW_MONITOR>
    </gml:featureMember>
    <!-- Feature 2 -->
    .
    .
    .
    </wfs:FeatureCollection>
我在向量层中使用的投影与在视图中使用的投影相同。 这里是投影的辩护:

proj4.defs("EPSG:2039", "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.20451694444445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs");
register(proj4);

let israeliTM = getProjection('EPSG:2039');

知道为什么地图上没有显示吗

源代码是WFS1.0.0,它使用GML2.1.2

<wfs:FeatureCollection xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd"

源代码是WFS1.0.0,它使用GML2.1.2

<wfs:FeatureCollection xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd"

如果不访问您的数据,很难知道它是否正在被解析,例如它可能与“简单功能”要求不兼容,或者它是否已加载但显示在错误的位置-传递给加载程序的投影是视图投影,因此您需要
featureProjection:projection
(在您的情况下,它与dataProjection相同)。您只需要基于像素的矢量平铺的范围,但指定它应该不是问题。@Mike,谢谢您的帖子。我添加了有关我的问题的其他信息。请参阅更新。您的WFS 1.0.0与GML 2.1.2一起使用,因此您需要将
新GML({
替换为
新GML2)({
@Mike,谢谢,它成功了。如果你发布,我会接受它作为答案。如果没有访问你的数据,很难知道它是否正在被解析,例如,它可能与“简单功能”不兼容需求,或者如果它被加载但显示在错误的位置-传递给加载程序的投影是视图投影,因此您需要
featureProjection:projection
(在您的情况下,它与dataProjection相同)。您只需要基于像素的矢量平铺的范围,但指定它应该不是问题。@Mike,谢谢您的帖子。我添加了有关我的问题的其他信息。请参阅更新。您的WFS 1.0.0带有GML 2.1.2,因此您需要将
新GML({
替换为
新GML2({
@Mike,谢谢你,它成功了。如果你发帖,我会接受它作为回答。