首页 > 解决方案 > 如何定期更新geojson标记

问题描述

我想要做的是使用带有 OSM 地图的 Leaflet,并以 GeoJSON 格式从 PHP 加载数据 + 定期更新。

我可以设法显示地图,加载数据,但不知道如何更新点而不是添加新点。

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();

试过 mymap.removeLayer("myLayer"); 但这似乎现在在函数内部起作用。请帮忙

标签: leafletopenstreetmapgeojsonmarkers

解决方案


L.geoJSONextends from LayerGroupwhich 提供了一个名为clearLayers( docs ) 的函数,因此您可以调用它来清除图层中的标记。

此外,建议您将 layer 变量放在函数之外:

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();

推荐阅读