Não encontrei nenhuma maneira de limpar ou remover todas as camadas ativas. Acho que deveria haver uma função para remover todas as camadas ativas sem passar pela camada específica. O que você acha?
Encontrei 2 funções principais para este propósito.
map.removeLayer (marcadores);
Markers.clearLayers ();
Mas estou tendo um problema ao usar esta função ... na verdade, ela funciona apenas uma vez, o que significa remover apenas uma camada de marcadores ou talvez eu esteja fazendo algo errado.
var map = novo L.Map ('mapa');
function getMarker () {
var heatMap = "";
if (marcadores) {
map.removeLayer (Membersx);
map.removeLayer (map._layers);
}
$ .ajax ({
tipo: "post",
url: "app_lib-> FOLDER ['admin']. $ this-> router-> class?> / buscador ",
dataType: "json",
dados: {camadas: = $ json_encode (camadas);?>}
sucesso: função (resultado) {
$ .each (resultado, função (índice, camada) {
var Markers = L.geoJson (layer.data, {
pointToLayer: function (feature, latlng) {
if (feature.geometry.type == 'Point') {
return L.marker (latlng, {icon: L.ExtraMarkers.icon ({icon: feature.marker_icon, markerColor: feature.marker_color, shape: feature.marker_type, prefix: 'fa'})})
}
},
onEachFeature: onEachFeature
});
map.addLayer (marcadores);
});
}
Você pode me ajudar com este problema ...?
Desde já, obrigado.
Há funcionalidade mais do que suficiente para remover camadas do mapa ou remover / limpar outras camadas agrupadas. L.Map
tem o método removeLayer
que funcionaria bem em combinação com a função eachLayer
;
map.eachLayer(function (layer) {
map.removeLayer(layer);
});
http://leafletjs.com/reference.html#map -eachlayer
http://leafletjs.com/reference.html#map -removelayer
Se você precisa muito dessa funcionalidade, pode incluí-la em L.Map
facilmente:
L.Map.include({
'clearLayers': function () {
this.eachLayer(function (layer) {
this.removeLayer(layer);
}, this);
}
});
A razão (estou especulando aqui) isso não está incluído em L.Map
é que muito poucas pessoas precisarão dele. A maioria das implementações usará um dos tipos de camadas agrupadas como L.LayerGroup
, L.FeatureGroup
ou L.GeoJSON
para criar coleções de camadas. Essas camadas têm o método clearLayers
incluído.
http://leafletjs.com/reference.html#layergroup -clearlayers
Toda a funcionalidade de que você precisa já está lá, você só precisa implementá-la corretamente. Se você está tendo problemas ou precisa de ajuda com sua implementação, postar neste issuetracker não é a coisa certa a fazer. Você receberá feedback e ajuda muito mais cedo se usar os canais adequados para isso, como no grupo do folheto do Google ou postar uma pergunta no Stackoverflow com a tag do
^^: +1:
Você também pode simplesmente lembrar de sua camada de marcadores e removê-la.
Comentários muito úteis
Há funcionalidade mais do que suficiente para remover camadas do mapa ou remover / limpar outras camadas agrupadas.
L.Map
tem o métodoremoveLayer
que funcionaria bem em combinação com a funçãoeachLayer
;http://leafletjs.com/reference.html#map -eachlayer
http://leafletjs.com/reference.html#map -removelayer
Se você precisa muito dessa funcionalidade, pode incluí-la em
L.Map
facilmente:A razão (estou especulando aqui) isso não está incluído em
L.Map
é que muito poucas pessoas precisarão dele. A maioria das implementações usará um dos tipos de camadas agrupadas comoL.LayerGroup
,L.FeatureGroup
ouL.GeoJSON
para criar coleções de camadas. Essas camadas têm o métodoclearLayers
incluído.http://leafletjs.com/reference.html#layergroup -clearlayers
Toda a funcionalidade de que você precisa já está lá, você só precisa implementá-la corretamente. Se você está tendo problemas ou precisa de ajuda com sua implementação, postar neste issuetracker não é a coisa certa a fazer. Você receberá feedback e ajuda muito mais cedo se usar os canais adequados para isso, como no grupo do folheto do Google ou postar uma pergunta no Stackoverflow com a tag do