您可以通过使用featureGroupRef
. 如果数字大于 1,则删除之前存储的图层,只保留最新的图层。这是代码:
const [editableFG, setEditableFG] = useState(null);
const onCreated = e => {
console.log(e);
console.log(editableFG);
// here you have all the stored layers
const drawnItems = editableFG.leafletElement._layers;
console.log(drawnItems);
// if the number of layers is bigger than 1 then delete the first
if (Object.keys(drawnItems).length > 1) {
Object.keys(drawnItems).forEach((layerid, index) => {
if (index > 0) return;
const layer = drawnItems[layerid];
editableFG.leafletElement.removeLayer(layer);
});
console.log(drawnItems); // here you will get only the last one
}
};
const onFeatureGroupReady = reactFGref => {
// store the featureGroup ref for future access to content
setEditableFG(reactFGref);
};
return (
<Map
center={[37.8189, -122.4786]}
zoom={13}
style={{ height: '100vh' }}>
<TileLayer
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url="http://{s}.tile.osm.org/{z}/{x}/{y}.png"
/>
<FeatureGroup
ref={featureGroupRef => {
onFeatureGroupReady(featureGroupRef);
}}>
<EditControl position="topright" onCreated={onCreated} />
</FeatureGroup>
</Map>
);
演示