javascript - 如何在 OpenLayers 5 中仅发送修改后的几何图形?

标签 javascript openlayers

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

我在修改后恢复几何图形并将其发送到我的 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));
    })
  })
})

这就是包裹的样子:

enter image description here

我的问题是: 如何修改我选择的最后一个地 block (这是我感兴趣的地 block )的几何形状而不修改其他所有地 block ?

最佳答案

您只需要设置一个modifyend监听器,就可以从事件中获取已修改的要素,也无需根据旧几何图形的坐标创建新的几何图形,它将是相同的(除非您想将多边形转换为多边形,但这需要额外的 [ ])

modify.on('modifyend',function(event) {
      var wkt = new ol.format.WKT().writeGeometry(event.features.getArray()[0].getGeometry());
})

关于javascript - 如何在 OpenLayers 5 中仅发送修改后的几何图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57708218/

相关文章:

javascript - 将函数引用传递给单独的 Javascript 文件以进行回调

javascript - 用于交互式 map 的 Flash 与 JavaScript

javascript - 如何将特定国家/地区的 map 加载到 OpenStreetMap 中?

java - 使用 Java mousePress、mouseMove 和 mouseRelease 进行单击和拖动

javascript - React 渲染页面比请求页面晚 1 页

javascript - 如何从 ES6 类中创建迭代器

javascript - 遍历对象时避免在 jQuery 中重复 .each()

javascript - d3.js:将匿名函数作为参数传递给居中力?

javascript - Openlayers 3 添加带有图标和文本的可移动标记

javascript - 如何在没有 XHR 的情况下加载 vectorSource