【发布时间】:2016-11-01 09:17:50
【问题描述】:
我在 OpenLayers 中从 Geoserver 提供一个 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层上的一个字段,在弹窗中与其他属性显示ok。
但是当我尝试使用此代码从所选对象中提取此属性时:
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 调试器中收到错误提示:
“类型错误:e.features[0] 未定义”。
我想要的只是能够在地图上单击,从 wms 层中提取属性值,将其分配给 javascript 变量并对其进行处理。任何帮助将不胜感激。
【问题讨论】:
-
你能在你的
selectid(e)函数中测试e的值吗?可以使用浏览器调试器拦截对您的地理服务器的getfeatureinfo请求和响应吗?如果这些不是结论性的,Geoservers 日志也可以提供一些见解。
标签: openlayers geoserver wms