MapBox GeoJSON清除所有标记?

时间:2016-08-13 02:46:36

标签: javascript leaflet mapbox

我想用" new"更新我的地图标记。因此,首先重置所有可见标记。我会通过Ajax的geoJSON读取我的标记:

   $.ajax({
        url: 'dashboard/geoJSON',
        dataType: 'json',
        async: false,
        type: 'GET',
        success: function(geojson) {
            var locations = L.mapbox.featureLayer().addTo(map);
            locations.setGeoJSON(geojson); 
            // reset?

         }
    });
我试过了:

L.mapbox.featureLayer().clearLayers();

要在添加所有新标记之前重置,但它无法正常工作。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案:

success: function(geojson) {

            markers.forEach(function(entry) {
                map.removeLayer(entry);
            });

            locations = L.mapbox.featureLayer().addTo(map);
            locations.on('layeradd', function (e) {
                var marker = e.layer;
                markers.push(marker);
            });

            locations.setGeoJSON(geojson);

如此错误地使用'layeradd'方法手动推送我的数组,然后在设置新数组之前删除所有数组。

答案 1 :(得分:0)

您应该清除map对象中的图层,而不是featureLayers,其中layer变量是包含所有标记的图层:



map.removeLayer(layer);




将全局L对象视为'生成器'各种各样的。您可以将其链接以创建地图,图层,标记等。您可以通过链接地图将 附加到特定地图。