【发布时间】:2021-09-30 14:39:51
【问题描述】:
我正在升级到 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 文档没有给出一个很好的例子来说明如何使用它,我在任何“升级”文档中都找不到一个很好的解释如何改变它以使其正常工作。
非常感谢任何帮助
【问题讨论】:
-
如果它适用于鼠标而不是指针,你需要一个 polyfill 吗? github.com/openlayers/openlayers/releases/tag/v6.4.0
-
这与它是否有效无关......它不会构建。我将使用此信息更新问题
标签: typescript openlayers openlayers-6 angular-openlayers