ol.Feature 的文档 OL3 API声明它触发“change:geometry”事件。文档没有指定何时触发此事件。
以下JSFiddle有一个使用 ol.interaction.Translate 移动矢量特征的示例。移动要素时,会触发“change”事件,但不会触发“change:geometry”事件。
获知要素几何图形已更新的正确方法是什么?
代码:
var select = new ol.interaction.Select();
select.on('select', (event) => {
event.selected.forEach((selectedFeature) => {
selectedFeature.on('change', (event) => {console.log('change', event)})
selectedFeature.on('change:geometry', (event) => {console.log('change:geometry', event)})
})
})
var translate = new ol.interaction.Translate({
features: select.getFeatures()
});
最佳答案
如果您更改几何对象,则 change:geometry
事件会在要素级别发生,即如果您执行以下操作:feature.setGeometry(aNewGeomObj)
, feature.setGeometry(null)
等
您正在寻找的是监听几何对象本身的change
事件。你可以这样做:
var geometry = feature.getGeometry();
geometry.on('change', function(evt) {
console.log(evt)
}, this);
您应该能够从那里做您想做的事情。
关于openlayers-3 - 当特征几何形状发生更改时如何收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40409946/