Я пытаюсь добавить указатель взаимодействия с моей картой 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.
Я не вижу ничего выдающегося в том, что я имею в виду, так что спасибо заранее, если кто-то сможет это заметить и помочь.