如何将存储为变量的图层添加到 mapbox 地图

How to add Layer stored as variable to mapbox map

我正在使用 mapbox.js,我正在尝试重置我删除但存储在变量中的图层。我创建了一个地图对象并将其附加到 div 并将其存储为变量 map。我像这样初始化图层

var myLayer = L.mapbox.featureLayer().addTo(地图);<br> var secondLayer = L.mapbox.featureLayer().addTo(地图);

然后我将它们存储在一个 json 对象中

    var geoJsons = {"myLayer": myLayer,
                    "secondLayer": secondLayer
                    };

在下面的函数中,我有一个 onclick 函数,它利用单击对象的数据属性指向 json 对象中的特定图层。

var layer = $(this).data('layer');
map.removeLayer(geoJsons[layer]);

然后我尝试通过点击不同的按钮重新添加它

geoJsons[layer] = L.mapbox.featureLayer().addTo(map);

最后一点不起作用。我的问题是,有没有办法通过从这个 json 对象中调用它来将图层重新添加到地图?

geoJsons[layer] = L.mapbox.featureLayer().addTo(map);

您在这里所做的是用 L.mapbox.featureLayer 的新实例覆盖存储的图层对象。存储层可通过 geoJsons[layer] 访问(假设 layer 变量包含字符串 myLayersecondLayer),您可以通过简单地调用它的 addTo 方法来添加它所以:

geoJsons[layer].addTo(map);
//or 
map.addLayer(geoJsons[layer]);