Openlayers 5.3.3 PointerInteraction handleEvent не получает одиночный клик - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь добавить указатель взаимодействия с моей картой Openlayers 5.3.3, и у меня возникли некоторые проблемы.По какой-то причине я не могу заставить его обрабатывать событие одним кликом.Я реализовал handleEvent, который, насколько я понимаю, должен обрабатывать все события указателя, с помощью одного клика, вызываемого щелчком, и задержкой 250 мс.Однако всякий раз, когда я нажимаю, это всегда просто событие щелчка, которое не то, что я ищу, так как я хочу обрабатывать 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 я могувидеть события, когда они запускаются, и когда я щелкаю левой кнопкой мыши, я получаю указатель вниз, указатель вверх и нажимаю последовательно.Когда я дважды щелкаю, я получаю эту последовательность дважды и событие dblclick.

Я не вижу ничего выдающегося в том, что я имею в виду, так что спасибо заранее, если кто-то сможет это заметить и помочь.

...