Javascript 如何在OpenLayers 5中仅发送修改的几何体?

Javascript 如何在OpenLayers 5中仅发送修改的几何体?,javascript,openlayers,Javascript,Openlayers,在我的地图中显示多个地块,用户可以修改地块的几何图形,并将其发送到我的API以更新数据库中的几何图形。 如果选择要修改其几何图形的地块,应用程序还将修改我可以事先单击的所有其他地块的几何图形。它就像是在记忆中保存我在包裹之前选择的所有我真正感兴趣的东西 修改后恢复几何体并将其发送到API之前的代码: map.on("click", function (evt) { map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {

在我的地图中显示多个地块,用户可以修改地块的几何图形,并将其发送到我的API以更新数据库中的几何图形。 如果选择要修改其几何图形的地块,应用程序还将修改我可以事先单击的所有其他地块的几何图形。它就像是在记忆中保存我在包裹之前选择的所有我真正感兴趣的东西

修改后恢复几何体并将其发送到API之前的代码:

map.on("click", function (evt) {
  map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
    modify.on('modifyend',function(event) {
          var geom = feature.getGeometry().getCoordinates();
          var wkt = new ol.format.WKT().writeGeometry(new ol.geom.MultiPolygon(geom));
    })
  })
})
这是包裹的外观:

我的问题是:
如何在不修改其他地块的情况下修改我感兴趣的最后一个地块的几何图形

您只需设置一个modifyend侦听器,即可从事件中获取已修改的功能,也无需从旧几何体的坐标创建新几何体,除非您希望将多边形转换为多多边形,否则它将是相同的,但这需要额外的[]


我确实像你说的那样,但我有一个错误:无法读取未定义的属性'getGeometry',可能问题是当我声明modify时?我是这样做的:var modify=newmodify{source:source,features:select.getFeatures};可能,您必须指定源或功能,而不是两者都指定。我尝试了此操作,但出现了相同的错误,我是console.logevent.features.array_[0].getGeometry,我有y{disposed_U2;:false,pendingRemovals_U2;:{…},Dispatcheng_U2;:{…},listeners_2;:{…},revision_2;2,}这正常吗?我已经更新了我的答案,因为我忘记了事件中的features属性是集合,而不是数组。当我将多边形转换为如下多多边形时,我有一个问题:var geom=new ol.format.WKT.writeGeometrynew ol.geom.MultiPolygonevent.features.getArray[0]。getGeometry;当我console.loggeom时,我有多个多边形是空的,你知道为什么吗?
modify.on('modifyend',function(event) {
      var wkt = new ol.format.WKT().writeGeometry(event.features.getArray()[0].getGeometry());
})