2017-05-05 95 views
0

我有一段代码象下面这样:右键点击文本菜单事件引发多次

map.getViewport().addEventListener('contextmenu', function (e) { 
      e.preventDefault(); 
      console.log(e.x); 
      openContextMenu(e.x, e.y); 
     }); 

基本上我试图文本菜单添加到openlayer地图。但是一个奇怪的行为正在发生。当我右键单击时,事件监听器被提出多个不。的时代。即在上面的代码中,console.log将打印30次以上,只需在地图上单击右键即可。

现在,如果我通过使用标志来处理这个问题,那么上下文菜单不会被渲染,即看起来像开发者需要所有这些多个调用。 但是,由于我打算在侦听器上执行复杂的操作,因此当右键单击一次时,我不能多次调用它。

我该如何解决?有没有添加右键单击上下文菜单openlayer地图

的任何其他更好的办法,我使用openlayer 3.0

回答

0

您的代码段对我的作品和事件触发一次。难道这段代码在你的页面上多次执行的上下文中?换句话说,事件监听器是否被多次添加?如果是这样,OpenLayers将单独注册每个侦听器,即使它们是相同的,并且当您点击时,最终它们都会触发。