多层的Openlayers和事件(OpenLayer.Layer.Vector)

Odi*_*aeb 10 events openlayers

另一天与openlayers和另一个问题一起工作.

即 - 我有多个矢量图层在彼此的顶部,用于不同类型的东西(汽车,历史和地区的旅行).他们都有我试图抓住的事件......但是正如尼克拉斯发现的那样,当你在一个层上激活事件时,它会被移动到顶层并且下面层上的事件不会被触发.

有没有办法绕过这个?因为当我移动区域多边形时,我希望事件触发并显示其名称,当我将鼠标移动到汽车标记时,我也希望事件发生火灾.并且不 - 我不想将它们放在同一层上,因为我希望它能够快速关闭或打开它们而不需要循环遍历所有功能并且每个功能都禁用它们.

艾伦

Edit1:我做了一些搜索,发现你可以在多个图层上使用相同的控件.这可能对我来说可以解决这个问题.我正在检查它并测试是否向单个控件添加更多层是我的问题的解决方案.

小智 10

当我遇到同样的问题时,我发现了这个问题,试图让多个层对鼠标事件做出反应.

解决方案,以防其他人发现此线程更简单.

SelectFeature控件采用Vector图层数组,如果您需要对鼠标事件(悬停和单击)做出反应的所有内容都在该数组中,则它们全部工作,而不仅仅是移动到顶部的那个.

因此,在该线程的批准解决方案中,通过这样做可以大大简化:

this.carSelect = new OpenLayers.Control.SelectFeature(
    [this.vectorsLayer, this.carsLayer],
    {
        'hover':true,
        'callbacks': {
            blah blah blah
    }
});
Run Code Online (Sandbox Code Playgroud)

这将在两个层上注册适当的事件并使它们都存在.

我希望这可以帮助其他人在这个问题上遇到麻烦.

正如其他地方所说的那样,使用OpenLayers并不难,找到正确的方法来处理它.