Openlayers 5.3.3 PointerInteraction handleEvent未收到单击

时间:2019-09-25 23:50:13

标签: typescript openlayers openlayers-5

我正在尝试向我的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事件。

我看不出有什么不正确的地方,所以在此先感谢您能发现并帮助您。

0 个答案:

没有答案