我正在尝试向我的Openlayers 5.3.3映射添加指针交互,但是遇到了一些问题。由于某种原因,我无法获取它来处理singleclick事件。我已经实现了handleEvent,据我所知,应该处理所有指针事件,一次单击是由一次单击触发的,延迟为250ms。但是,每次单击时,总是单击事件,这不是我要查找的事件,因为我想处理dblclick和右键单击以及其他操作。
我创建交互的代码:
public constructor(id: string, params: UserInteractionPointerParams) {
this._id = id;
this._interaction = new olPointerInteraction({
handleEvent: (event: olMapBrowserEvent): boolean => {
console.log(event.type);
switch (event.type) {
case 'singleclick':
if (olPrimaryAction(event) && params.handleSingleClick !== undefined) {
params.handleSingleClick(getPointerEventData(event));
}
break;
case 'dblclick':
if (olPrimaryAction(event) && params.handleDoubleClick !== undefined) {
params.handleDoubleClick(getPointerEventData(event));
}
break;
case 'pointermove':
if (olPrimaryAction(event) && params.handlePointerMove !== undefined) {
params.handlePointerMove(getPointerEventData(event));
}
break;
}
return true;
},
});
}
public getInteractionOL(): olPointerInteraction {
return this._interaction;
}
因此,在此构造函数中,我创建了交互,然后使用以下命令将其添加到地图中:
this._map.addInteraction((item as any).getInteractionOL();
使用console.log,我可以在触发事件时看到它们,当我单击鼠标左键时,我得到了pointerdown,pointerup和依次单击的信息。当我双击时,该序列两次出现,并发生dblclick事件。
我看不出有什么不正确的地方,所以在此先感谢您能发现并帮助您。