OpenLayers 如何停止 OpenLayers 6

问题描述

我正在升级到 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,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)

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

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

非常感谢任何帮助

解决方法

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