1

好吧,当一个悬停时我想要一个漂亮的弹出窗口,但我也希望矢量可选。如果我跳过悬停部分,它就像魅力一样,但是:/我错过了什么吗?

vectors.removeAllFeatures();
var geojson_format = new OpenLayers.Format.GeoJSON();
vectors.addFeatures(geojson_format.read(data));
var selectCtrl = new OpenLayers.Control.SelectFeature(vectors,
{
    clickout: true
});
map.addControl(selectCtrl);
selectCtrl.activate();
vectors.events.on({
    "featureselected": featureSelected
});
var hover = new OpenLayers.Control.SelectFeature(vectors,{
    hover: true,
    highlightOnly: true,
    eventListeners: {
         featurehighlighted: featureHover,
         featureunhighlighted: featureUnHover
    }
});
map.addControl(hover);
hover.activate();
4

2 回答 2

0

我只是以错误的顺序编写了代码。map.addControl(hover); hover.activate();应该是之前

map.addControl(selectCtrl);
 selectCtrl.activate();
 vectors.events.on({
     "featureselected": featureSelected
 });

所以,现在它起作用了!

于 2012-06-14T14:34:59.673 回答
0

这真的有效吗,因为按照我的看法,一旦您使用OpenLayers.Control.SelectFeature创建了 2 个 map.addControl,就会有 1 个无效。事实上,我有 2 层,一个公共汽车层和一个公共汽车站层。当我全部激活它们时,只有在总线层上的悬停有效。当我没有激活 buslayer 的控制时,突然 bus-stops 层开始工作。所以他们都单独工作。您在这里的问题是关于我在这里找到的唯一一个带有 2 个 addControl 行的问题。我也尝试使用autoActivate但结果相同。

更新

它实际上打算不再工作,显然您无法创建 2 个控制功能。相反,您需要创建一个并将其应用于两个图层。如文档中所述,对此的支持已在 2.7 中删除。有一个很好的例子来说明如何使用2 个不同的 Vector Layers来做到这一点。这让我花了好几天才意识到。您只需要在弹出窗口中确定您所在的图层并采取相应的行动,看起来就可以了。

于 2012-10-10T12:32:09.737 回答