javascript - OpenLayers 3+ 中缺少本地上下文菜单处理?
问题描述
作为努力将 OL2 映射应用程序升级到 OL4/5 的负担重的程序员之一,我非常感谢 stackoverflow 的贡献者,他们的帖子/答案已经解决了我的大部分问题。剩下一个:上下文菜单处理。
我在 OL4+ 中找不到任何本地处理上下文菜单/右键单击的方法。但是,我在这里成功使用了 jonatawalker 的出色插件。这个资源有点矫枉过正(基本上我只想检测右键单击并采取行动),并且希望尽可能坚持标准。我错过了 OL 库中的某些内容吗?
解决方案
在地图画布上设置侦听器适用于版本 5 和更早版本,使用控件容器最高可达 6.2,因此此代码与两个版本兼容
var canvas = map.getViewport().getElementsByTagName("canvas")[0] ||
map.getViewport().getElementsByClassName("ol-overlaycontainer-stopevent")[0];
canvas.addEventListener('contextmenu', function (e) {
...
...
});
在不工作的版本 6.3 中,它似乎是响应式的最顶层画布,但画布会根据图层可见性和视图旋转而改变。
推荐阅读
- python - Gensim word2vec - 从不同于 0 的索引开始词汇
- php - 年份下拉菜单我有错误的数据类型吗?
- greenplum - Greenplum 4.3.14.0 崩溃
- python - venv vs virtualenv - 为什么 venv 不使用当前的 pip 和 setuptools?
- c# - 为什么我必须导航到生成的“编辑器”URL 两次才能正确重定向?
- r - 将 data.frame 列名传递给使用 purrr::map 的函数
- javascript - 在 Angular 6 中生成动态模板引用变量
- jquery - Jquery +/- 符号更新购物车数量。增量后如何自动提交表单?
- google-sheets - 根据该行中的 L 列格式化单元格 A 不为空
- javascript - JS 异步函数永远等待