试图保存,重新绘制,编辑,删除绘制组件。没有一致的ID,可以强制使用ID?

时间:2019-06-10 19:56:29

标签: reactjs react-leaflet react-leaflet-draw

我正在使用带有反应传单抽签的反应传单。我的目标是能够将我拥有的绘图组件保存在数据库中(有效),然后将它们重新绘制到传单地图中(有效)。现在的问题是,重新绘制后可以删除/编辑这些内容,因为似乎没有可以使用/强制使用的稳定ID。

<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作为props传递到地图组件中的:

 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;
  }

0 个答案:

没有答案