0

我想要的是:

要单击删除,请选择绘制的图层,然后在单击保存时从 UI 和 Firestore 中删除它们

我现在如何拥有它:

每次我创建一个新的leaflet.Draw 图层(例如一个矩形)时,我都会将它保存到firestore,删除所有,然后再次创建每个图层。这是为了解决复制层的问题。

但是,每次我从 firestore 加载和创建图层(或刷新页面)时,图层都会获得新的 id。我需要 id 保持一致,以便我可以将 id 存储在 firebase 中,并在以后使用它进行删除。

问题:

我怎样才能做到这一点?或者,还有更好的方法?

我用于创建的代码在这里:

    this.subscriptions.add(this.fieldmapsMainViewService.mapAnnotations$.subscribe(mapAnnotations => {
      console.log('mapAnnotations', mapAnnotations)
      this.mapAnnotations = mapAnnotations || []

      this.drawnItems.clearLayers()

      // tslint:disable-next-line:prefer-for-of
      for (let i = 0; i < this.mapAnnotations.length ; i += 1 ) {
        if (this.mapAnnotations[i].type === 'rectangle') {
          // console.log('printing rectangle')
          L.rectangle([
            [
              this.mapAnnotations[i].NW.u_,
              this.mapAnnotations[i].NW.h_,
            ],
            [
              this.mapAnnotations[i].SE.u_,
              this.mapAnnotations[i].SE.h_,
            ],
          ]).addTo(this.drawnItems)
        }
      }
    }))

我在删除时找到 id 的方式是这样的:

    map.on(L.Draw.Event.DELETED, e => {
      // this.dummyMethod(this.dummyValue)
      e.layers.eachLayer(layer => { console.log(layer._leaflet_id) })
    })
4

0 回答 0