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