我尝试用openlayers(v2.12)加载wfs层,但不幸的是,在向wfs服务器发出http选项请求后,加载中断。firebug显示服务器发送空响应。未检测到错误。在旧的openlayers版本(v2.8)中,我在另一个应用程序中使用的是no options请求。这段旧代码发送的纯http get如下:

http://myWfsServer/wfs?typename=someName&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG%3A4326&BBOX=...

这是当前代码
map = new OpenLayers.Map( 'map',{
    maxExtent:OpenLayers.Bounds.fromArray([7,47,10,49]),
    units: 'm'});

layer = new OpenLayers.Layer.OSM( "Simple OSM Map","http://myWfsServer/tiles/${z}/${x}/${y}.png");
map.addLayer(layer);
wfsLayer = new OpenLayers.Layer.Vector("WFS", {
    projection: "EPSG:4326",
    maxExtent: OpenLayers.Bounds.fromArray([7,47,10,49]),
        strategies : [new OpenLayers.Strategy.BBOX()],
        protocol : new OpenLayers.Protocol.WFS.v1_0_0({
        url : "http://myWfsServer/wfs",
        featureType : "ms:lsaId",
        featureNS : "http://mapserver.gis.umn.edu/mapserver",
    format: new OpenLayers.Format.WFST.v1_0_0({
        featureType: "ms:lsaId",
        featureNS: "http://mapserver.gis.umn.edu/mapserver"})
        })
});
map.addLayer(wfsLayer);
map.setCenter(new OpenLayers.LonLat(9,48).transform(
      new OpenLayers.Projection("EPSG:4326"),
      map.getProjectionObject()), 16);

问题1:有没有办法跳过这个请求,像在早期的openlayers版本中那样继续使用标准的get请求?
问题2:OpenLayers期望得到什么样的响应?

最佳答案

问题解决了。选项请求来自浏览器,而不是OpenLayers。原因是wfs服务器不是服务器提供的web应用程序。此请求与允许跨域访问有关。
问题1:让应用程序宿主提供wfs数据。例如,将apache配置为原始wfs的代理。
问题2:没有想法-d

09-10 11:26