Saltar al contenido

Agregar/Eliminar capas GeoJSON usando Leaflet

Mateo, miembro de este equipo, nos hizo el favor de escribir este post porque controla a la perfección dicho tema.

Solución:

Prueba esto en su lugar:

function getJson(simp)  //Removed unneeded arguments here
    var url = 'file' + simp + '.json';
    map.removeLayer(geojsonLayer);
    //geojsonLayer.clearLayers();  I don't believe this needed.
    $.getJSON(url, function(data)
        geojsonLayer = L.geoJson(data, 
            style: defaultStyle,
            onEachFeature: onEachFeature
        );
        geojsonLayer.addTo(map);
    );

Y para su función de llamada:

map.on('zoomend', function(e) 
    if (map.getZoom() >= 7 && map.getZoom() <= 10)  else if (map.getZoom() >= 11) 
        if (simpCounter == 0  else if (map.getZoom() <= 7) 
);

Cuando estás pasando los argumentos map, geojsonLayer y defaultStyle en la llamada getJson(defaultStyle, map, 60, geojsonLayer); está creando nuevas instancias de los objetos. Luego realiza el trabajo en las instancias que pueden reflejarse en la pantalla, pero una vez que regresa al 'bucle principal', básicamente olvida todo lo que acaba de hacer y vuelve al estado anterior.

Ya que supongo que definiste defaultStyle, mapy la inicial geojsonLayer población en el ámbito global solo tienes que llamarlos, no hay necesidad de pasarlos. Con los ajustes que hice cambia el global map por lo tanto, los cambios persisten después de que finalizan las llamadas a funciones.

Esta solución funcionó para mí. Puede ver el contenido completo del archivo que hice aquí: http://pastebin.com/yMYQJ2jK

También defino un nivel de zoom final para 1-7 para que pueda ver sus datos JSON iniciales cuando regrese al nivel de zoom inicial, de lo contrario, se pierde y nunca se vuelve a llamar a menos que vuelva a cargar la página.

Escribí el siguiente ejemplo para mostrar cómo eliminar varias capas de geoJSON.

///adding geoJSON data

          var myGeoJSON = L.geoJSON(myData, 

            onEachFeature: function (feature, layer) 
                layer.myTag = "myGeoJSON"
            

        );


////// function to remove geoJSON layers 

    var removeMarkers = function() 
        map.eachLayer( function(layer) 

          if ( layer.myTag &&  layer.myTag === "myGeoJSON") 
            map.removeLayer(layer)
              

            );

    

//// calling function 

removeMarkers();

Sección de Reseñas y Valoraciones

Tienes la opción de secundar nuestra investigación añadiendo un comentario y dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *