OpenLayers WFS图层加载不能看到效果之一:数据已下载,图形没看到

以下代码为 OpenLayers示例代码wfs-states.js改编出来的代码,这样写完全没有问题。

var map;

OpenLayers.ProxyHost = "cgi-bin/proxy.cgi?url=";
function init() {
    map = new OpenLayers.Map("map");

    var base = new OpenLayers.Layer.WMS("OpenLayers WMS",
        "http://localhost:8090/geoserver/wms",
        {l ayers: "topp:states"
    );
    map.addLayer(base);

    var wfs = new OpenLayers.Layer.Vector("States", {
        strategies: [new OpenLayers.Strategy.BBOX()],
        protocol: new OpenLayers.Protocol.WFS({
        //version: "1.0.0",
        //srsName: "EPSG:4326", 
            url: "http://localhost:8090/geoserver/wfs",
            featureType: "states",
            featureNS: "http://www.openplans.org/topp"

            
        })
    });
    map.addLayer(wfs);

    map.zoomToExtent(new OpenLayers.Bounds(-124.4, 25.1, -66.4, 50.5));

请注意红色部分。在WMS图层当中,layers:"topp:states" ,这样写是可以加载WMS图层的。但如果对于加载WFS的Vector图层也这样写的话,如featureType:"topp:states",则应用程序可以从服务器下载到WFS接口的GML数据,但却不能在客户端看到黄色透明的覆盖层。这是为什么呢?

经过分析,对于WFS协议 Protocol,程序都是使用featureType,featureNS以及featurePrefix来解析GML内容,但没有提供featureNS时,程序虽然发出WFS请求,并接收到GML结果,但并不能被正确解析,因此它就无法显示黄色透明的覆盖层。

这里值得我们注意的是:所有的与WFS有关的请求,它的参数都应该按照 featureType, featureNS来写,featureNS不可或缺,featurePrefix参数可填可不填。

你可能感兴趣的:(OpenLayers WFS图层加载不能看到效果之一:数据已下载,图形没看到)