Я обслуживаю слой wms от Geoserver в OpenLayers и пытаюсь извлечь конкретный атрибут из объекта в этом слое, когда я нажимаю на карту.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, и он отображает 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 говоря:
"TypeError: e.features[0] is undefined".
Все, что я хочу быть можно щелкнуть по карте, извлечь значение атрибута из слоя wms, назначить его переменной javascript и сделать с ней что-то. Любая помощь будет принята с благодарностью.
Можете ли вы проверить значение 'e' в функции' selectid (e) '? Можно ли использовать отладчики браузера для перехвата запроса 'getfeatureinfo' на ваш геосервер и ответ? Журналы геосервисов также могли бы дать некоторое представление, если они не являются окончательными. –