Juan, miembro de nuestro staff, nos ha hecho el favor de redactar este tutorial porque domina perfectamente el tema.
Solución:
Recorra todas las capas añadidas al mapa usando el eachLayer
método de L.Map
luego llama al removeLayer
método de L.Map
en cada uno de ellos:
map.eachLayer(function (layer)
map.removeLayer(layer);
);
Referencias:
eachLayer
: http://leafletjs.com/reference.html#map-eachlayer
removeLayer
: http://leafletjs.com/reference.html#map-removelayer
Tenga en cuenta que esto eliminará TODAS las capas de su mapa. Eso significa también cualquier capa de mosaico, etc. Creo que en su caso sería mejor si no agrega todas sus capas de características a la instancia del mapa, sino que crea un grupo para ellas:
// Create group for your layers and add it to the map
var layerGroup = L.layerGroup().addTo(map);
$.getJSON('distributor-companies', function (data)
$.each(data, function (i, item)
if (item.geojson != '')
// Add the new featureLayer to the layerGroup
var featureLayer = L.mapbox.featureLayer().addTo(layerGroup);
$.getJSON('/geojson/' + item.geojson, function (data)
featureLayer.setGeoJSON(data);
featureLayer.eachLayer(function (layer)
layer.on('click', function (e)
map.fitBounds(featureLayer.getBounds());
);
);
);
);
);
Ahora puedes llamar al clearLayers
método de L.LayerGroup
que borrará las capas actuales en el grupo:
layerGroup.clearLayers();
Referencia:
L.LayerGroup
: http://leafletjs.com/reference.html#layergroup
clearLayers
: http://leafletjs.com/reference.html#layergroup-clearlayers
Puede usar la siguiente verificación de veracidad para ver si es un objeto geoJSON válido:
map.eachLayer(function(layer)
if (!!layer.toGeoJSON)
map.removeLayer(layer);
);
Si crees que ha sido provechoso nuestro post, sería de mucha ayuda si lo compartieras con otros entusiastas de la programación de este modo contrubuyes a extender este contenido.