【发布时间】:2012-07-18 09:18:55
【问题描述】:
我在 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();
使用此代码,我可以毫无问题地通过单击地图来选择要素,但我需要通过单击地图外部的内容来选择要素。主要问题是我必须将OpenLayers.Feature 对象传递给 selectionControl.addFeatures 方法,但我没有那个对象,只有fid 或 WMS 层中包含的一些信息。
我在 tomcat7 上使用 Geoserver 和 Openlayers。有什么想法吗?
【问题讨论】:
标签: gis openlayers layer geoserver