【问题标题】:Display WFS layer in ol3在ol3中显示WFS层
【发布时间】:2015-08-03 22:17:40
【问题描述】:

我正在使用 geoserver 和 openlayers 3,我在 geoserver 中有一个托管层,我希望使用 ol3 作为 wfs 层来显示它。它没有显示任何错误,但我没有得到地图。它适用于 wms,但不适用于 wfs。 我正在使用 wamp 服务器来托管我的应用程序。

请谁能帮我解决这个问题?这是我的代码:

var v=new ol.layer.Vector({
       source: new ol.source.Vector({
            format: new ol.format.WFS({
                version: '1.1.0',
                url: 'http://localhost:8080/geoserver/wfs',
                featurePrefix: 'opengeo', 
                featureType: 'comgeo', 
                featureNS: 'http://localhost:8080/opengeo', 
                geometryName: 'geom'
            })
        })  
});
var map = new ol.Map({
    target: 'map-id',
    layers: [v],
    view: new ol.View({
        projection: 'EPSG:4326',

        center: [0, 0],
        zoom: 1
    })     
});

我在论坛中看到我需要设置代理,我这样做了,我的代理工作正常,但我不知道如何在我的代码中使用它(Openlayers.ProxyHost)。 当我使用 firebug 时,在网络/图像选项卡下,我可以看到 wms 请求,但看不到 wfs。 提前致谢。

【问题讨论】:

    标签: geoserver openlayers-3


    【解决方案1】:

    您似乎在混淆 OpenLayers 2 和 OpenLayers 3。请查看 thisthis 示例。这些示例使用JSONP,因此您不需要代理。

    【讨论】:

    • 感谢您的回复,有没有不使用 JSONP 的方法?
    • 我想我还有一个问题,我只是在 jetty/webapps 中制作了我的应用程序,但没有显示 wfs 层.. 所以这与 cors 无关
    【解决方案2】:

    终于解决了我的问题,所以想和大家分享一下解决方法。

    首先我之前的代码有一些错误,这是设置wfs层的正确方法:

    var u = "http://localhost/geoserver/wfs?&service=wfs&version=1.1.0&request=GetFeature&typeNames=opengeo:comgeo";
    var v = new ol.layer.Vector({
        title: 'comgeo',
               source: new ol.source.Vector({
                    url: '/cgi-bin/proxy.cgi?url='+ encodeURIComponent(u),
    
                    format: new ol.format.WFS({
    
                    })
               })   
    });
    

    u是wfs请求,参数opengeo是geoserver中的workspace,comgeo是layer。

    您需要使用encodeURIComponent 函数来转义此网址,这样您就不会得到像这样的著名错误:

    无法确定来自 http 请求的地理服务器请求

    我的 url /cgi-bin/proxy.cgi?url= 的第一部分是因为如果您的应用程序从另一个位置运行,您需要一个代理(我使用 wamp 来托管我的)。

    要让您的代理正常工作,请尝试本教程: set proxy

    像我的代码一样使用代理,这个

    OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
    

    ol3 中不可用。

    【讨论】:

    • 伙计,我花了 10 个小时来寻找这东西的工作原理,最后感谢你,我成功了。每个人如何复制和粘贴关于 jsonp 等的无用答案,这很荒谬。这些东西都不适合我。但你的回答成功了。非常感谢您抽出宝贵时间发布。
    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多