0
我创建了不同的动态图层,动态地显示了所有功能,一切都在运行中,而且我需要在选择每个特定功能时执行一些操作。我不能在这里贴实际的源代码,因为它有依赖和它的相当长的还可以,但你能想象像下面这样:onSelect event on dynamic created layers
if (e.Bubbles) {
jQuery.each(e.Bubbles, function (i, obj) {
jQuery.each(obj, function (n, el) {
/* features and layers ... */
var point = new OpenLayers.Geometry.Point(el[1],el[0]);
/* some code here ... */
});
layer = new OpenLayers.Layer.Vector(i, {styleMap: e.Style});
map.addLayer(layer);
e.Layers.push(layer);
/* etc. */
当我试图将onSelect
事件绑定到层,它可以工作,但它取代了以前的图层行为,因此当您单击要素时,loop
中的最后一层可以正常工作,但只能在最后一层。这里是我的代码(内循环):
selectControl = new OpenLayers.Control.SelectFeature(
Layer,
{
clickout: false,
toggle: false,
multiple: false,
hover: false,
}
);
selectControl.activate();
layer.events.on({
"featureselected": function(event) {
console.log(event.feature);
}
});
所以,selectControl
将在循环中,每次更换,就会失去其自身的功能,对于以前的,只是适用于最新层。
我试过把所有的图层都作为一个数组(这应该是可行的),但没有任何成功。
selectControl = new OpenLayers.Control.SelectFeature(
e.Layers,
{
clickout: false,
toggle: false,
multiple: false,
hover: false,
onSelect: function(event) {
console.log(event.feature);
},
}
);
selectControl.activate();