我有一个带有WFS协议和BBOX策略的vectorLayer。它应该加载初始数据。但是如果我拖拽地图,geoserver日志只是说:{当前日期}INFO [geoserver。wfs] -请求:getServiceInfo而不是getFeature(就像它在初始请求时那样)。我的问题是,在地图上什么都没有发生。如果我在图层上设置一个"refresh"eventandler,它不会触发…我是否需要在其他地方刷新地图/图层?
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 webconsole告诉我已经在初始请求"无法显示类型(null)的响应".....?它甚至没有显示任何东西,尽管我只是更改了url。
编辑:null响应似乎是由于tomcat apache服务器没有配置代理导致的。是否可以在没有代理的情况下运行它,如果js文件在类似的apache文件夹中,如在geoserver上?最后,我需要在tomcat上运行它。是"代理。cgi文件格式不佳"错误比空响应更好?如果可能的话,我想在没有代理的情况下解决它,但看起来包括代理使我更接近我想要的地方。
您的WFS端点(GeoServer)应该相对于您的页面定位,否则同源策略开始生效。您可以尝试使用apache和mod_proxy或mod_jk来修复它。有了这些库,就可以将部署在tomcat中的geoserver相对于应用程序进行挂载。
如果您的应用程序无法做到这一点,则应该使用所提供的代理脚本。
是的,geoserver在其日志文件中发出WFS请求时显示getServiceInfo。我注意到同样的行为与geoserver 2.1.1