在悬停状态下选择WMS层-错误Openlayers.REQUEST.GET params

在悬停状态下选择WMS层-错误Openlayers.REQUEST.GET params,openlayers,geoserver,wms,feature-selection,Openlayers,Geoserver,Wms,Feature Selection,我有wms baselayer和wms shapefile。我想在悬停时选择wms shapefile功能并更改其颜色。我尝试了SLD选择和分别添加选择和悬停向量,但不幸的是,它没有起作用。任何openlayers示例都不适合我。在Firebug中,我得到了以下错误:TypeError:d.params是未定义的…长度;b 具体来说,Chrome给出的版本未定义 任何帮助都将不胜感激 var format = 'image/png'; map = new Open

我有wms baselayer和wms shapefile。我想在悬停时选择wms shapefile功能并更改其颜色。我尝试了SLD选择和分别添加选择和悬停向量,但不幸的是,它没有起作用。任何openlayers示例都不适合我。在Firebug中,我得到了以下错误:TypeError:d.params是未定义的…长度;b

具体来说,Chrome给出的版本未定义

任何帮助都将不胜感激

        var format = 'image/png';
        map = new OpenLayers.Map('map', options);

        // setup tiled layer
        tiled = new OpenLayers.Layer.WMS(
            "Baselayer", "http://www.fineenergygis.co.uk:80/geoserver/GIS/wms",
            {
                LAYERS: 'Baselayer',
                STYLES: '',
                format: format,
                tiled: true,
                tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom
            },
            {
                buffer: 0,
                displayOutsideMaxExtent: true,
                isBaseLayer: true,

                yx : {'EPSG:27700' : false}
            } 
        );

        //setup AONB layer test
        aonb = new OpenLayers.Layer.WMS(
            "AONB", "http://www.fineenergygis.co.uk:80/geoserver/GIS/wms",
            {
                LAYERS: 'GIS:AONB',
                STYLES: '',
                format: 'image/gif',
                transparent: true,
                tiled: true,
                tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom
            },
            {
                buffer: 0,
                displayOutsideMaxExtent: true,
                isBaseLayer: false,
                yx : {'EPSG:27700' : false}
            } 
        );
        aonb.setOpacity(0.6);
        map.addLayers([tiled,aonb]);

        // build up all controls
        map.addControl(new OpenLayers.Control.PanZoomBar({
            position: new OpenLayers.Pixel(2, 15)
        }));

        map.addControl(new OpenLayers.Control.Scale(document.getElementById('scale')));
        map.addControl(new OpenLayers.Control.MousePosition({div: document.getElementById('location') }));
        map.setCenter(new OpenLayers.LonLat(406480,286782), 5);
        map.addControl(new OpenLayers.Control.LayerSwitcher());


        controls = {
            navigation: new OpenLayers.Control.Navigation(),
            box: new OpenLayers.Control.SLDSelect(
                OpenLayers.Handler.RegularPolygon,
                {
                    displayClass: 'olControlSLDSelectBox', 
                    layers: ['aonb'],
                    handlerOptions: {irregular: true}
                }
            )
        };

        for(var key in controls) {
            map.addControl(controls[key]);
        }

        // wire up the option button
        var options = document.getElementById("options");
        options.onclick = toggleControlPanel;

    }

    function toggleControl(element) {

        for(var key in controls) {
            var control = controls[key];
            alert(element.value);
            alert(key);
            if(element.value == key && element.checked) {
                alert("activate");
                control.activate();

            } else {
            alert("deactivate");
                control.deactivate();
            }
        }
    }

    function toggleSelectionLayer(element) {
        var selectLayers = [];
        var elements = element.value.split("_");
        for (var key in layers) {
            var layer = layers[key];
            for (var i=0, len=elements.length; i<len; i++) {
                var value = elements[i];
                if (value == key && element.checked) {
                    selectLayers.push(layer);
                }
            }
        }
        for (var i=0, len=this.map.controls.length; i<len; i++) {
            var control = this.map.controls[i];
            if (control instanceof OpenLayers.Control.SLDSelect) {
                control.setLayers(selectLayers);
            }
        }
    }



</script>
</head>
<body onload="init()">

<div id="nodelist">

<div id="controls">
<ul id="controlToggle"><b>Map Controls</b>
    <li>
        <input type="radio" name="control" value="navigation" id="noneToggle" onclick="toggleControl(this);" CHECKED>
        <label for="noneToggle">navigate</label>
    </li>
    <li>
        <input type="radio" name="control" value="box" id="boxToggle" onclick="toggleControl(this);" >
        <label for="boxToggle">SLD select with box</label>
    </li>

</ul>
</div>
 <div id="layers">
<ul id="layerToggle"><b>Selection layer</b>
    <li>
        <input type="radio" name="layer" value="waterbodies" id="waterbodiesToggle" onclick="toggleSelectionLayer(this);" CHECKED>
        <label for="noneToggle">AONB</label>
    </li>
</ul>
</div>
</body>
var格式='image/png';
map=newOpenLayers.map('map',选项);
//设置平铺层
平铺=新OpenLayers.Layer.WMS(
“基层”http://www.fineenergygis.co.uk:80/geoserver/GIS/wms",
{
图层:“Baselayer”,
样式:“”,
格式:格式,
瓦莱德:没错,
tilesOrigin:map.maxExtent.left+','+map.maxExtent.bottom
},
{
缓冲区:0,
displayOutsideMaxExtent:true,
isBaseLayer:是的,
yx:{'EPSG:27700':false}
} 
);
//设置AONB层测试
aonb=新OpenLayers.Layer.WMS(
“AONB”http://www.fineenergygis.co.uk:80/geoserver/GIS/wms",
{
图层:“GIS:AONB”,
样式:“”,
格式:'image/gif',
透明:是的,
瓦莱德:没错,
tilesOrigin:map.maxExtent.left+','+map.maxExtent.bottom
},
{
缓冲区:0,
displayOutsideMaxExtent:true,
isBaseLayer:false,
yx:{'EPSG:27700':false}
} 
);
aonb.毛不透明度(0.6);
添加图层([平铺,aonb]);
//建立所有的控制
map.addControl(新的OpenLayers.Control.PanZoomBar({
位置:新OpenLayers。像素(2,15)
}));
map.addControl(新的OpenLayers.Control.Scale(document.getElementById('Scale'));
addControl(新的OpenLayers.Control.MousePosition({div:document.getElementById('location')}));
地图设置中心(新OpenLayers.LonLat(406480286782),5);
addControl(新的OpenLayers.Control.LayerSwitcher());
控件={
导航:新建OpenLayers.Control.navigation(),
框:新建OpenLayers.Control.SLDSelect(
OpenLayers.Handler.RegularPolygon,
{
displayClass:'olControlSLDSelectBox',
图层:['aonb'],
handlerOptions:{unregular:true}
}
)
};
for(变量键输入控件){
map.addControl(控件[键]);
}
//连接选项按钮
var options=document.getElementById(“选项”);
options.onclick=切换控制面板;
}
功能切换控件(元素){
for(变量键输入控件){
var控制=控制[键];
警报(元素值);
警报(键);
if(element.value==key&&element.checked){
警报(“激活”);
控件。激活();
}否则{
警报(“停用”);
控件。停用();
}
}
}
功能切换SelectionLayer(元素){
var selectLayers=[];
var elements=element.value.split(“”);
for(层中的变量键){
变量层=层[键];

对于(var i=0,len=elements.length;i使用OpenLayers.Layer.WFS而不是WMS。WFS要求以OpenLayers.format类(如WKT、GeoJson、Json等)识别的任何格式提供数据