我在OpenLayers中为Geoserver提供了一个wms图层,并试图在点击地图时从该图层中的对象提取特定属性。openlayers从wms获取属性
我定义我的WMS层是这样的:
oas = new OpenLayers.Layer.WMS(
"oas",
"http://www.bwgeoserver.com/geoserver/UK_Admin/wms",
{
"LAYERS": 'wealthmap_bdy',
transparent: 'true',
extractAttributes: 'true'
},
{
buffer: 0,
opacity: 1,
displayOutsideMaxExtent: true,
isBaseLayer: false
}
);
map.addLayer(oas);
该层显示在地图上确定。我正在使用代理服务器,并且没有跨域问题,因为我可以选择并显示弹出窗口中的所有属性。 “OA11Code”绝对是wms图层上的一个字段,它可以与弹出窗口中的其他属性一起显示。
但是,当我尝试使用此代码从选定的对象中提取此属性:
oaPicker = new OpenLayers.Control.WMSGetFeatureInfo({
url: 'http://www.bwgeoserver.com/geoserver/UK_Admin/wms',
title: 'identify features on click',
layers: [oas],
queryVisible: true
});
oaPicker.events.register('getfeatureinfo', this, selectid);
map.addControl(oaPicker);
oaPicker.activate();
function selectid(e) {
var val = e.features[0].attributes.OA11Code;
}
我得到了Firefox的调试器的错误说:
"TypeError: e.features[0] is undefined".
所有我想要的是能够点击地图,从wms图层中提取一个属性的值,将其分配给一个JavaScript变量,并对其进行处理。任何帮助将不胜感激。
你可以在'selectid(e)'函数中测试'e'的值吗?可以使用浏览器调试程序拦截对您的地理服务器和响应的getfeatureinfo请求吗?如果这些不是确凿的,地理服务器日志可以提供一些见解。 –