如何更新顶点拖动传单可编辑的矩形边界

How to update rectangle bounds on vertex drag leaflet editable

我一直在使用 leaflet-editable.js 来编辑形状。具体来说,我正在创建一个矩形,当拖动一个角时,该矩形将保持 4:3 的纵横比。我创建了一个函数来计算纵横比和 return 应该绘制新角的 lat/lng 。 我已将此功能附加到事件“editable:vertex:drag”。

我不确定如何更新矩形的实际绘图以保持比例。我尝试将对象属性设置为更新但不更改矩形的新边界。

我认为答案是刷新矩形的绘图,但我不知道如何获取当前矩形实例,也不知道如何刷新它。

Javascript 对我来说是新的

carto.on('editable:vertex:drag', function(e) {
  console.log(e);
  var cornersNe = e.vertex.latlngs[0], //ne
      cornersNw = e.vertex.latlngs[1], //nw
      cornersSw = e.vertex.latlngs[2], //sw
      cornersSe = e.vertex.latlngs[3]; //se
  var distanceWidth = carto.distance(cornersNw, cornersNe).toFixed(2);
  var distanceHeight = carto.distance(cornersSw, cornersNw).toFixed(2);
  var asR = aspectRatio(distanceWidth, distanceHeight, e.latlng.lat, e.latlng.lng);
  var index = e.vertex.getIndex(),
      next = e.vertex.getNext(),
      previous = e.vertex.getPrevious(),
      oppositeIndex = (index + 2) % 4,
      opposite = e.vertex.latlngs[oppositeIndex],
      bounds = new L.LatLngBounds(asR, opposite);
   // L.marker(bounds).addTo(carto);
  console.log('first set of bounds ', e.layer._bounds);
  console.log('bounds to set ', bounds);
  e.layer._bounds = bounds;
  console.log('Updated set ',e.layer._bounds);

如果这太迂回,我愿意接受其他方法。

使用public函数设置边界:

  e.layer.setBounds(bounds);