在 Leaflet 中将 Key/Value 对附加到 L.Control.layer

Append Key/Value pair to L.Control.layer in Leaflet

这是我的 "issue."

的简化示例

我有一个 key/value 对的列表,如下所示:

var baseMaps = {"thing1": thing1,
                 "thing2": thing2};

var overlayMaps = {"OverLay1": link to overlay2
                    "Overlay2": link to overlay2};

等......

我可以使用此代码添加到我的对象列表中:

overlayMaps["New Item"] = link to new item;

我在控制台上验证它已添加到 overlayMaps 列表中。

问题:它不像其他所有的那样显示在地图侧面的框中。它们在一个盒子里,旁边几乎没有复选标记来打开和关闭它们。我是否缺少一些代码来执行此操作?看来我需要一种方法来刷新图层组列表。

假设您的其余代码与 documentation 中的示例一致。

L.control.layers(baseLayers, overlays).addTo(map);

问题是您丢失了对控件实例的引用,因为您没有将它分配给任何东西。由于 addTo 方法是可链接的,它将为您提供控制权。

var layerControl = L.control.layers(baseLayers, overlays).addTo(map);

现在您可以在您的代码中访问它,运行 它的方法如 layerControl。addBaseLayer