传单:如何创建一个显示所有其他图层的图层组?

Leaflet: How to create a group layer that shows all other layers?

我创建了以下脚本,但它不会显示两个图层。如果我删除单个组("commerciele parkeerplaatsen" 和 "rodents")并且只离开 "both" 组它确实有效。

var CommercialParkingSpots = L.geoJson(CommercialParking,{
    onEachFeature: MakePopupWindow  
})/*.addTo(map)*/;

var Rodents = L.geoJson(rodents,{
    onEachFeature: MakePopupWindow2  
})/*.addTo(map)*/;

var both = L.layerGroup([CommercialParkingSpots, Rodents]);

var overlays = {
    "commerciele parkeerplaatsen" : CommercialParkingSpots, 
    "rodents" : Rodents,
    "both" : both,
}

L.control.layers(null, overlays).addTo(map)

Leaflet 层一次只能添加到一个实体(地图或分组层)。因此,一旦您单击 'rodents' 复选框,图层就会从 'both' 图层组中删除并添加到地图中。 'commercialparking' 层也是如此。一旦将它们都添加到地图中,'both' 图层组为空,因此当 added/removed 到地图时将不执行任何操作。它确实获得了 added/removed to/from 地图,但您不会看到任何差异,因为图层是空的。

简而言之。你想做的事是不可能的。也许类似这样的解决方案对您有用:

创建图层组:

baseLayers = {
  "OpenStreetMap": lyrOSM,
  "OpenTopoMap": lyrOpenTopoMap,
  "Esri-WorldImagery": lyrWorldImagery
};

overlays = {
  "Mountains": Mountains,
  "River": River 
};

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