经纬志
首页 / OpenLayers / API 文档

Translate

先看结论

平移交互。拖动指定要素改变其几何位置,常用于编辑场景下整体搬移图形。

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

构造参数

参数说明
features可拖动的要素集合,必填
layers参与拖动的图层,数组或返回布尔值的函数
filter进一步过滤要素的函数
hitTolerance命中容差像素,默认 0
condition判定是否开始拖动的事件条件
style拖动中的临时样式

常用方法

方法返回说明
getHitTolerance() / setHitTolerance(t)number / void读写命中容差
getActive() / setActive(a)boolean / void启停平移
getFeatures()Collection<Feature>取绑定要素集合

事件

事件回调参数说明
translatestartevt.features开始拖动
translatingevt.features、evt.coordinate拖动过程中持续触发
translateendevt.features、evt.coordinate拖动结束,适合提交坐标
var select = new ol.interaction.Select({ layers: [vectorLayer] });
map.addInteraction(select);

var translate = new ol.interaction.Translate({
  features: select.getFeatures(),
  hitTolerance: 4,
  layers: [vectorLayer]
});
map.addInteraction(translate);

translate.on('translateend', function (evt) {
  evt.features.forEach(function (feature) {
    console.log(feature.getId(), feature.getGeometry().getExtent());
  });
});

注意事项

  • features 必填且只接受集合对象,传单个要素或数组都不会生效。
  • 与 Select 配合时直接传 select.getFeatures(),选中变化会自动同步可拖动范围,不需要重建交互。
  • 拖动过程实时改写几何体,中途断网或取消不会回滚,需要撤销能力时在 translatestart 里先记录坐标。
  • layers 只影响命中判断,若要素已在集合中但不属于这些图层,拖动仍会被拦截。
引用本文

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