1

マップをクリックするのではなく、マップの外部にあるボタンまたは何かをクリックして、フィーチャを選択し、マップ上でそれらを強調表示する必要がある WMS レイヤーにベクター レイヤーを設定しました。コードは次のとおりです。

regioni = new OpenLayers.Layer.WMS(
            "regioni",
            "http://localhost:8080/geoserver/mmasgis/wms",
            {layers: 'mmasgis:reg2011_g', format: 'image/gif'}
);

select = new OpenLayers.Layer.Vector("Selection", {styleMap:
            new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"])
});

map.addLayers([regioni, select]);

selectionControl = new OpenLayers.Control.GetFeature({
            protocol: OpenLayers.Protocol.WFS.fromWMSLayer(regioni),
            box: true,
            hover: true,
            multipleKey: "shiftKey",
            toggleKey: "ctrlKey"
        });
        selectionControl.events.register("featureselected", this, function(e) {
            select.addFeatures([e.feature]);
        });
        selectionControl.events.register("featureunselected", this, function(e) {
            select.removeFeatures([e.feature]);
        });
map.addControl(selectionControl);
selectionControl.activate(); 

このコードを使用すると、問題なくマップをクリックしてフィーチャを選択できますが、マップの外部をクリックしてフィーチャを選択する必要があります。主な問題は、selectionControl.addFeatures メソッドにオブジェクトを渡す必要があるOpenLayers.Featureことですが、そのオブジェクトはなくfid、WMS レイヤーに含まれる 1 つまたは一部の情報だけです。

Tomcat7 で Geoserver と Openlayers を使用しています。何か案は?

4

1 に答える 1