My target is delete actual control on the map to create it again with updated data.
I know about control.remove() but to use this function I need first get control object.
That's my control legend basic from L.control:
And here is the code to create L.control:
function legend(map)
{
var legend = L.control({position: 'bottomright'});
legend.onAdd = function (map) {
var elements = [];
map.eachLayer(function(layer){
if (layer._icon)
{
elements.push("svg");
}
});
var div = L.DomUtil.create('div', 'info legend'),
elements,
labels = [];
for (var i = 0; i < elements.length; i++) {
div.innerHTML +=
'<i>'elements[i]'</i><br>';
}
return div;
};
legend.addTo(map);
}
Thank you.
function legend(map) {
var legend = L.control({ position: 'bottomright' });
legend.onAdd = function (map) {
var elements = [];
map.eachLayer(function (layer) {
if (layer._icon) {
elements.push("svg");
}
});
var div = L.DomUtil.create('div', 'info legend'),
elements,
labels = [];
for (var i = 0; i < elements.length; i++) {
div.innerHTML +=
'<i style="' elements[i] '"></i><br>';
}
return div;
};
legend.addTo(map);
return legend
}
const legendInstance = legend(map);
// remove
legendInstance.remove()
you must return and save control instance if you want remove