angular - 触摸和拖动地图时,Openlayers 无法垂直滚动页面
问题描述
我正在使用带有Angular的Openlayers,并在屏幕上嵌入了一个简单的地图。我禁用了这样的交互:
this.map = new Map({
target: 'map',
interactions: [],
layers: [this.layer],
view: this.view
});
这可以防止地图在被触摸和拖动时平移,这正是我所需要的。但是,我希望能够通过按下并拖动地图来垂直向下滚动浏览器页面,以便用户能够看到地图下方的内容。目前,只能通过触摸和拖动地图外的区域来滚动页面。
有与此相关的 github 问题:
https ://github.com/openlayers/openlayers/issues/6767
https://github.com/openlayers/openlayers/issues/8458
但我无法让它工作。任何人都可以帮助解决这个问题?
谢谢
解决方案
有几种方法可以实现这一点。我的首选方法是配置地图
import Map from 'ol/Map';
import {defaults as defaultInteractions} from 'ol/interaction';
new Map({
target: 'map',
interactions: defaultInteractions({
onFocusOnly: true
}),
// ...
});
标记中地图的目标元素需要有一个tabindex
属性,例如
<div tabindex="1" id="map"></div>
您可以在这里看到它的实际效果:https ://openlayers.org/en/latest/examples/interaction-options.html 。这个想法是,只要地图没有焦点,您就可以平移和滚动页面。只有当它获得焦点时(例如点击地图后),平移和滚动手势才会修改地图视图。
推荐阅读
- autohotkey - AHK 对文件列表进行反向排序
- django - Django无法读取块中的脚本
- javascript - 昂贵计算的示例
- session - Mosquitto QoS2 错误 - 或微妙的规范解释?
- android - 处理程序线程中的可运行帖子一个接一个地执行
- javascript - 从表单对象单击反应 js 时添加输入字段
- mysql - 如何一次在 AWS Lambda 函数中传递多个 MySQL 查询
- ios - Swift 无法推断复杂的闭包返回类型
- c++ - 编译 llvm 插件时出现问题:llvm/Config/llvm-config.h: No such file or directory
- reactjs - 有没有办法在本机反应中在单选按钮上绘制形状?