我在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請求嗎?如果這些不是確鑿的,地理服務器日誌可以提供一些見解。 –