Search code examples
leafletopenstreetmapgeojsonmarkers

How to update geojson markers periodically


What I am trying to do is to use Leaflet with OSM map, and load data from PHP in GeoJSON format + update periodically.

I can manage to display a map, load data, but do not know how to update points instead of still adding a new ones.

function update_position() {


        $.getJSON('link_to_php', function(data) {

            //get data into object
            var geojsonFeature = JSON.parse(data);

            // how to remove here old markers???


            //add new layer
            var myLayer = L.geoJSON().addTo(mymap);

            //add markers to layet
            myLayer.addData(geojsonFeature);

            setTimeout(update_position, 1000);

        });
    }

    update_position();

have tried mymap.removeLayer("myLayer"); but this seems to now work inside of function. Please help


Solution

  • L.geoJSON extends from LayerGroup which provide a function named clearLayers(docs), so you call that to clear markers from the layer.

    Also, it is recommended that you put the layer variable outside the function:

    var geoJSONLayer = L.geoJSON().addTo(mymap);
    
    function update_position() {
        $.getJSON('link_to_php', function(data) {   
            //get data into object
            var geojsonFeature = JSON.parse(data);
    
            geoJSONLayer.clearLayers();
    
            //add markers to layet
            geoJSONLayer.addData(geojsonFeature);
    
            setTimeout(update_position, 1000);
        });
    }
    
    update_position();