我正在升级到 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 文档没有给出一个很好的例子来说明如何使用它,我在任何“升级”文档中都找不到一个很好的解释如何改变它以便它可以工作。
任何帮助是极大的赞赏