Попытка сохранить, перерисовать, отредактировать, удалить компоненты рисования. Нет последовательного идентификатора, принудительный идентификатор? - PullRequest
0 голосов
/ 10 июня 2019

Я использую реактивную листовку с розыгрышем. Моя цель - сохранить компоненты рисования, которые у меня есть, в БД (работает), а затем перерисовать их на карту листовки (работает). Теперь проблема заключается в возможности удалить / отредактировать их после перерисовки, поскольку, похоже, не существует стабильного идентификатора, который я могу использовать / force.

<Map center={position} zoom={this.state.zoom} ref={node => this.map = node} >
  <LayersDropDown />
    <FeatureGroup>
      <EditControl
        position='topright'
        onEdited={this.handler}
        onCreated={this.handler}
        onDeleted={this.handler}
        draw={{ marker: false, circlemarker: false, circle: false, polygon: false, rectangle: false }}
      />
        {geometries}
      </FeatureGroup>
    <TileLayer url={this.state.tileLayer.url} attribution={this.state.tileLayer.attribution} />
    {mapMarkers}
</Map>

где геометрии создаются из geoJSON, переданного в компонент карты как реквизиты:

 createShapes(layers) {
      const shapes = [];
      const keys = Object.keys(layers);

      for (let i = 0; i < keys.length; i++) {
        shapes.push(<Polyline key={layers[keys[i]].id} positions={layers[keys[i]].geometry.coordinates} />);
      }

      return shapes;
    }

Я преобразую объекты для отправки в мой бэкэнд следующим образом:

 convertLayerToGeometry(layer) {
    const geometry = layer.toGeoJSON();

    geometry.properties=layer.options;
    geometry.properties.id=layer._leaflet_id;

    return geometry;
  }
...