Openlayers 3 开放层3:如何为修改交互创建侦听器

Openlayers 3 开放层3:如何为修改交互创建侦听器,openlayers-3,Openlayers 3,我已经成功地建立了一个修改交互 ol.interaction.Modify()的文档不包含修改功能时触发的单个事件 与ol.interaction.Draw()不同,它工作得很好 我需要在修改特征后更新数据库中的坐标 如何设置侦听器?我找到了一个解决方案 高层解释如下: 基本上,您不会听取修改交互中的更改(就像您在绘制交互中所做的那样)。相反,您将侦听所选功能本身的更改 这里有一个简短的摘录: // get the features from the select interaction var

我已经成功地建立了一个修改交互

ol.interaction.Modify()的文档不包含修改功能时触发的单个事件

与ol.interaction.Draw()不同,它工作得很好

我需要在修改特征后更新数据库中的坐标

如何设置侦听器?

我找到了一个解决方案

高层解释如下:

基本上,您不会听取修改交互中的更改(就像您在绘制交互中所做的那样)。相反,您将侦听所选功能本身的更改

这里有一个简短的摘录:

// get the features from the select interaction
var selected_features = select_interaction.getFeatures();
// when a feature is selected...
selected_features.on('add', function(event) {
    // get the feature
    var feature = event.element;
    // ...listen for changes on it
    feature.on('change', function(event) {
        // got it!
    });
});

下面是一个完整的工作示例:

为此,您必须使用以下方法:

feature.once('change', function(bool) {if (bool) {document.getElementById('my_input_text').value='feature changed'}})
您必须使用“once”而不是“on”来避免多次检查,并使用布尔变量来检查功能是否已更改


希望此帮助

是否可能文档最近已更改。我在修改文档下看到了(键入、侦听器、opt_this),这在以前是有的。但是使用.on('change')不起作用。我在这里找到了一个相当复杂的解决方案:。它的工作原理是倾听功能本身的变化,事实上,这些变化似乎相当合理。你打算发布一些我能+1的工作答案吗?OpenLayers 3文档目前自然有点单薄,因为他们正在全力以赴地完成代码,我想很多人会想知道一些旧控件、拖动、修改以及它们各自的回调是如何工作的。看起来uid()函数没有按应有的方式工作。我错了吗?