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