另一天工作与openlayers和另一个问题.
也就是说,对于不同类型的东西(汽车,历史和地区的旅行),我拥有多个矢量图层.他们都有事件,我试图抓住…但正如Niklas发现,当你在一层上激活事件,它被移动到顶部,层以上的事件不会发射.
有没有办法绕过这个?因为当我移动区域多边形时,我想要事件触发和显示它的名字,当我将鼠标移动到汽车标记,我也想事件火.而不,我不想把它们放在同一层,因为我希望可以把它们关闭或快速,而不会循环遍历所有的功能,并禁用它们.
艾伦
Edit1:我做了一些搜索,发现你可以在多个层上使用相同的控件.这可能会为我解决这个问题.我检查它atm和测试是否添加更多的层到单一的控制是解决我的问题或不.
> Forcing an OpenLayers Markers layer to draw on top,and having selectable layers beneath
解决方法
当我遇到同样的问题时,我发现这个问题,试图让多个层面对鼠标事件做出反应.
解决方案,以防万一有人发现这个线程要简单得多.
SelectFeature控件采用一个Vector层数组,如果您需要对鼠标事件(悬停和点击)做出反应的所有缓冲区都在该数组中,则它们都可以工作,而不仅仅是移动到顶部的缓冲区.
所以,在这个线程的批准的解决方案中,通过这样做可以大大简化:
this.carSelect = new OpenLayers.Control.SelectFeature( [this.vectorsLayer,this.carsLayer],{ 'hover':true,'callbacks': { blah blah blah } });
这将在两层上注册适当的事件,并使它们同时生效.
我希望这有助于任何人绊倒这个问题.
如其他地方所说,使用OpenLayers并不难,找到正确的方法来做事情.