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 계층의 필드이며 팝업의 다른 속성과 함께 ok를 표시합니다.
그러나 나는이 코드를 사용하여 선택한 개체에서이 특성을 추출하려고하면
"TypeError: e.features[0] is undefined".
내가 원하는 건이 될 것입니다 : 내 말은 파이어 폭스 디버거에서 오류가 발생
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;
}
을 지도를 클릭하고, wms 계층에서 속성의 값을 추출하고, 자바 스크립트 변수에 할당하고, 무언가를 수행합니다. 어떤 도움이라도 대단히 감사하겠습니다.
당신의'selectid (e)'함수에서'e'의 값을 테스트 할 수 있습니까? 브라우저 디버거를 사용하여 geoserver와 응답에 대한'getfeatureinfo' 요청을 가로 챌 수 있습니까? Geoservers 로그는 결정적이지 않은 경우 통찰력을 제공 할 수 있습니다. –