我的代码片段如下:
map.getViewport().addEventListener('contextmenu', function (e) {
e.preventDefault();
console.log(e.x);
openContextMenu(e.x, e.y);
});
基本上我正在尝试将contextmenu添加到openlayer地图中。但是一种奇怪的行为正在发生。当我右键单击时,事件监听器会被多次提升。时间。即在上面的代码中,只需在地图上右键单击一次,console.log就会打印30次以上。
现在如果我通过使用标志来处理这个问题,那么上下文菜单就不会被渲染,即看起来像openlayer需要所有这些多次调用。 但是因为我打算对听众进行复杂的操作,所以当你只需点击一次就不能多次调用它。
我该如何解决这个问题?是否还有其他更好的方法可以将右键单击上下文菜单添加到openlayer map
我正在使用openlayer 3.0
答案 0 :(得分:0)
您的代码段适用于我,并且事件仅触发一次。可能是这个片段是在您的页面上多次执行的上下文中吗?换句话说,是否多次添加事件监听器?如果是这样,OpenLayers将分别注册每个听众,即使它们相同,并且当你点击时,你最终都会触发它们。