2012-01-19 146 views
2

我試圖將一個包含geoserver的數據集添加到openlayers地圖中。我跟着opengeo教程,在這裏看到類似的線程,但我似乎無法破解它。有人可以看一下我的代碼和geoserver設置,並告訴我哪裏出錯了嗎?使用OpenLayers添加WFS圖層

這裏是我的代碼:

  //WMS map 
      world = new OpenLayers.Layer.WMS("Global Imagery", "http://maps.opengeo.org/geowebcache/service/wms", { 
       layers : "openstreetmap", 
       format : "image/png" 
      }); 
      map.addLayer(world); 

      //WFS 
      parks = new OpenLayers.Layer.Vector("WFS", { 
       strategies : [new OpenLayers.Strategy.BBOX()], 
       protocol : new OpenLayers.Protocol.WFS({ 
        url : "http://localhost:8081/geoserver/wfs", 
        featureType : "medford:parks", 
        featureNS : "http://medford.opengeo.org/medford" 
       }) 
      }); 

      map.addLayer(parks); 

      map.zoomToMaxExtent(); 

GeoServer的細節: 工作空間名稱=梅德福,命名空間URI = http://medford.opengeo.org 因爲我已經試過 「公園」 和功能型 「梅德福:公園」

的圖層已啓用,廣告並具有30個功能返回限制。

我竭力把一個簡單的地圖一起

謝謝, 詹姆斯

回答

3

首先你能給出有關通過使用調試工具,如Firebug存在的任何錯誤一些更多的信息。我的第一個猜測是geoserver實例不在同一個域中運行(這包括同一個域中的不同端口),並且由於跨站點腳本限制而阻止了對服務器的請求。

如果是這種情況,OpenLayers帶有一些CGI代理腳本示例,允許您代理對geoserver的調用。看看更多信息here

希望有幫助,如果不是,可能會發布一些與您看到的任何錯誤有關的更多信息。

+0

你是對的 - 最有可能的問題是,wfs-requests被髮送到不同的域 - http:// localhost:8081/ – igorti

+0

好吧,我現在已經將我的代碼移動到http:// localhost:8081/apps /index.html並更改了我的功能。我現在可以看到響應的30個特性... 25 NS/86427/74196 2.307 < RPID:GROSS_AREA>。但是我沒有看到我地圖上的任何功能。當作爲WMS添加時,我可以看到它們很好。唯一的其他層是基礎WMS。 –

+0

這聽起來像是與openlayers代碼無關。也許是geoserver中圖層的樣式問題? WFS回報是否包含特徵的位置信息?如果你可以添加一些調試輸出,比如WFS返回的代碼片段,在上面的問題中我會看一看 –