经纬志
首页 / OpenLayers / API 文档

KeyboardPan

先看结论

键盘平移交互。方向键把地图按固定像素步长移动,地图容器获得焦点后即可使用, 是不依赖鼠标的替代操作方式。

最后验证 2026-11-03 · OpenLayers 10.3.1 · 更新 2026-10-29 · 引用本文
new ol.interaction.KeyboardPan(options)

构造参数

参数默认说明
condition事件未被其他处理器拦截时响应(mapBrowserEvent) => boolean,返回 false 时不移动地图
pixelDelta128每按一次方向键移动的像素距离

示例

var keyboardPan = new ol.interaction.KeyboardPan({
  pixelDelta: 200,
  condition: function (event) {
    // 输入框获得焦点时不响应方向键
    var tag = event.originalEvent.target.tagName;
    return tag !== 'INPUT' && tag !== 'TEXTAREA';
  }
});

map.addInteraction(keyboardPan);

焦点与可访问性

键盘事件绑定在地图容器的 DOM 上,容器必须可聚焦才能收到按键。 为 map.getViewport() 设置 tabindex="0", 并补一个可见的焦点样式,键盘用户才能进入地图并看到当前位置。

方向键默认会滚动页面,交互处理器在接管按键后会阻止默认行为。 页面本身有长滚动内容时,用户可能以为方向键失灵,此时给出提示文案或 把焦点限制在地图区域内会更清晰。

与 KeyboardZoom 配合

ol.interaction.KeyboardZoom 负责 +、- 的层级缩放, 与 KeyboardPan 分工明确,两者通常一起启用。 只加平移不加缩放时,键盘用户能移动但无法改变比例尺。

pixelDelta 与分辨率无关。它固定按屏幕像素移动, 在高清屏上同样的值看起来位移更小。需要「每次移动固定地理距离」时, 改为监听 keydown 并调用 view.adjustCenter, 以地图单位计算偏移。

引用本文

经纬志(2026)。《KeyboardPan》。https://www.jingweizhi.com/openlayers/api/keyboard-pan.html(访问日期 2026-11-03)。