首页 / OpenLayers / API 文档
Translate
先看结论
平移交互。拖动指定要素改变其几何位置,常用于编辑场景下整体搬移图形。
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> | 取绑定要素集合 |
事件
| 事件 | 回调参数 | 说明 |
|---|---|---|
translatestart | evt.features | 开始拖动 |
translating | evt.features、evt.coordinate | 拖动过程中持续触发 |
translateend | evt.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)。