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);
層は、地図上の[OK]を表示しています。私はプロキシサーバーを使用しており、ポップアップ内のすべての属性を選択して表示できるため、ドメイン間の問題はありません。 "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;
}
は、私が言ってFirefoxのデバッガでエラーが出ますマップをクリックし、wmsレイヤーから属性の値を抽出し、それをjavascript変数に割り当てて、何かを実行します。どんな助けでも大歓迎です。
あなたの 'selectid(e)'関数で 'e'の値をテストできますか?あなたのgeoserverとレスポンスに対する 'getfeatureinfo'リクエストをインターセプトするためにブラウザのデバッガを使うことができますか? Geoserversのログは、決定的なものではない場合にも、いくつかの洞察を提供することができます。 –