簡體   English   中英

在ol3中顯示WFS層

[英]Display WFS layer in ol3

我正在使用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。 提前致謝。

最后,我解決了我的問題,所以我想和你分享解決方案。

首先在我之前的代碼中存在一些錯誤,這是設置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請求,paramvalue opengeoopengeo中的工作空間, comgeo是層。

你需要通過使用encodeURIComponent函數來轉義這個url,所以你不會得到像這樣的着名錯誤:

無法從http請求中確定地理標志請求

我的url /cgi-bin/proxy.cgi?url=的第一部分是因為如果你的應用程序是從另一個位置運行的話我需要一個代理(我正在使用wamp來托管我的)。

要使代理工作,請嘗試本教程: set proxy

在我的代碼中使用代理,這個

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

ol3不可用。

看起來你正在混淆OpenLayers 2和OpenLayers 3.請看一下這個這個例子。 這些示例使用JSONP,因此您不需要代理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM