openlayers-3 - 当特征几何形状发生更改时如何收到通知?

标签 openlayers-3

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/

相关文章:

javascript - OpenLayers3 : Require Shift for mouse wheel zoom on map

javascript - 在选择时获取功能 ID

javascript - OpenLayers 3 中的图层切换

openlayers-3 - 在 OpenLayers3 中限制 WMS 范围外的平移

javascript - OpenLayers 3 中哪些类型的源支持 ol.source.ImageVector

icons - 修复了 OpenLayers 3 中的图标大小

javascript - Openlayers 传奇

javascript - OpenLayers 中的 Debounce 特征选择

javascript - 无论如何要在单层上指定特征的 z 顺序?

qt - wkhtmltopdf OpenLayers V3 失败