2011-12-12 99 views
0

我有一個帶WFS協議和BBOX策略的vectorLayer。它應該首先加載數據。 但是,如果我拖動地圖geoserver日誌只是說:{curr date} INFO [geoserver.wfs] - 請求:getServiceInfo而不是getFeature(就像它在初始請求期間一樣)。 我的問題是在地圖上沒有任何反應。如果我在圖層上設置了「刷新」eventHandler,它將不會觸發... 我是否必須在其他地方刷新地圖/圖層?OpenLayers wfs request - > geoserver log:getServiceInfo改爲getFeature

var map; 
function init(){ 
    .. 
    map = new OpenLayers.Map('map', options); 
    var gsat = new OpenLayers.Layer.Google(...); 
    map.addLayer(gsat); 
    var lonlat = new OpenLayers.LonLat(...); 
    map.setCenter(lonlat, 18); 
    loadLayer(); 
    .. 
} 
function loadLayer(){ 
    loadLayerFunc(); 
    ... 
} 

function loadLayerFunc(){ 
    var wfsLayer = loadLayerFunc(); 
    wfsLayer.events.on({...}); 
    map.addLayer(wfsLayer); 
    ... 
} 
function loadLayerFunc(){ 
var bboxStrategy = new OpenLayers.Strategy.BBOX({ratio: 0.8}); 
wfsLayer = new OpenLayers.Layer.Vector("wfsLayer", { 
    strategies: [bboxStrategy], 
    protocol: new OpenLayers.Protocol.WFS({ 
    version: "1.1.0", 
    srsName: "EPSG:4326", 
    url: wfs_url, 
    featureType: "positions_test", 
    featurePrefix: "feature", 
    geometryName: "the_geom", 
    schema: "http://localhost:8080/geoserver/wfs?request=DescribeFeatureType&service=WFS&typeName=ws:positions", 
    maxFeatures: 1000 
}), 
    projection: geoProjection 
    }); 
    return wfsLayer; 
} 

如果我的另一臺服務器上運行相同的腳本,Firefox的Web控制檯告訴我已經在初始請求「無法顯示類型的響應(空)」 ......? 它甚至沒有顯示任何東西,雖然我只是改變了網址。

編輯:空響應似乎是由沒有代理配置的tomcat apache服務器引起的。如果js文件與geoserver中的類似apache文件夾一樣,可以在沒有代理的情況下運行它?最後我需要在tomcat上運行它。 「proxy.cgi文件格式不正確」錯誤比空響應更好嗎?如果可能的話,我想在沒有代理的情況下解決它,但看起來包括代理使我更接近我想要的地方。

回答

0

您的WFS端點(GeoServer)應該相對於您的頁面定位,否則same origin policy會啓動。 您可以嘗試使用apache和mod_proxy或mod_jk修復它。通過這些庫,您可以在tomcat中部署geoserver,相對於您的應用程序。

如果這不適用於您的應用程序,則應使用隨附的proxy script

是的,geoserver在其日誌文件中發出WFS請求時顯示getServiceInfo。我注意到與geoserver相同的行爲2.1.1

相關問題