首页 / OpenLayers / API 文档
KeyboardPan
先看结论
键盘平移交互。方向键把地图按固定像素步长移动,地图容器获得焦点后即可使用, 是不依赖鼠标的替代操作方式。
new ol.interaction.KeyboardPan(options)
构造参数
| 参数 | 默认 | 说明 |
|---|---|---|
condition | 事件未被其他处理器拦截时响应 | (mapBrowserEvent) => boolean,返回 false 时不移动地图 |
pixelDelta | 128 | 每按一次方向键移动的像素距离 |
示例
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)。