0

我正在升级到 OpenLayers 6 和以前工作的代码

  import { MapBrowserPointerEvent as olMapBrowserPointerEvent } from 'ol/events/Event';

  const simpleLineInteraction: PointerInteraction = new PointerInteraction({
  handleDownEvent: handleDownEventHandler,
  handleDragEvent: handleDragEventHandler,
  handleUpEvent: handleUpEventHandler,
  stopDown: stopDownHandler
  });
  function stopDownHandler(evt: olMapBrowserPointerEvent) {
  return false;
  }

已停止为 stopDownHandler 工作

我试图实现的代码是

import  MapBrowserEvent  from 'ol/MapBrowserEvent';
const simpleLineInteraction: PointerInteraction = new PointerInteraction({
handleDownEvent: handleDownEventHandler,
handleDragEvent: handleDragEventHandler,      
handleUpEvent: handleUpEventHandler,
stopDown: stopDownHandler
});
function stopDownHandler(evt: MapBrowserEvent<MouseEvent>) {
return false;
}

我还尝试在 stopDownHandler 中使用“UIEvent”类型并尝试将其设置为 false ... OpenLayers 文档说它需要一个函数,并且新模式不会为任何其他处理程序抛出错误,但“stopDownHandler”即(

function handleDownEventHandler(evt: MapBrowserEvent<MouseEvent>) {
if (evt.originalEvent.buttons !== 2) {
downClick = evt.coordinate;
return true;
} else { return false; }
}

) 作品

我收到错误

类型 '(evt: MapBrowserEvent) => boolean' 不可分配给类型 '(arg0: boolean) => boolean'。参数“evt”和“arg0”的类型不兼容。类型 'boolean' 不可分配给类型 'MapBrowserEvent'.ts(2322)

使用类型 UIEvent 和错误时

类型 '(evt: MapBrowserEvent) => boolean' 不可分配给类型 '(arg0: boolean) => boolean'。参数“evt”和“arg0”的类型不兼容。类型 'boolean' 不可分配给类型 'MapBrowserEvent'.ts(2322)

当使用鼠标事件类型时......即使类型鼠标事件适用于其他处理程序。

OpenLayers 文档没有给出一个很好的例子来说明如何使用它,我在任何“升级”文档中都找不到一个很好的解释如何改变它以便它可以工作。

任何帮助是极大的赞赏

4

1 回答 1

0

将 evt: MapBrowserEvent 更改为 arg0: boolean 使错误消失,但这似乎不是一个好的解决方案……它实际上似乎是一个错误。

于 2021-07-23T14:28:29.350 回答