首页 > 解决方案 > OpenLayers 3+ 中缺少本地上下文菜单处理?

问题描述

作为努力将 OL2 映射应用程序升级到 OL4/5 的负担重的程序员之一,我非常感谢 stackoverflow 的贡献者,他们的帖子/答案已经解决了我的大部分问题。剩下一个:上下文菜单处理。

我在 OL4+ 中找不到任何本地处理上下文菜单/右键单击的方法。但是,我在这里成功使用了 jonatawalker 的出色插件。这个资源有点矫枉过正(基本上我只想检测右键单击并采取行动),并且希望尽可能坚持标准。我错过了 OL 库中的某些内容吗?

标签: javascriptevent-handlingcontextmenuopenlayers

解决方案


在地图画布上设置侦听器适用于版本 5 和更早版本,使用控件容器最高可达 6.2,因此此代码与两个版本兼容

var canvas = map.getViewport().getElementsByTagName("canvas")[0] ||
             map.getViewport().getElementsByClassName("ol-overlaycontainer-stopevent")[0];

canvas.addEventListener('contextmenu', function (e) {
    ...
    ...
});

在不工作的版本 6.3 中,它似乎是响应式的最顶层画布,但画布会根据图层可见性和视图旋转而改变。


推荐阅读