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

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

本文关键字:图层 其他 显示 何创建 创建 传单      更新时间:2023-09-26

我创建了以下脚本,但它不会同时显示这两个图层。如果我删除单个组("商业公园广场"和"啮齿动物"(,只留下"两个"组,它确实有效。

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 图层添加到一个实体(地图或分组图层(。因此,一旦单击"啮齿动物"复选框,图层就会从"两者"图层组中移除并添加到地图中。"商业停车场"层也是如此。将两者添加到地图后,"两者"图层组为空,因此在添加/移除到地图时将不执行任何操作。它确实会添加到地图/从地图中删除,但您不会看到差异,因为图层为空。

所以要简短。你想做的事情是不可能的。也许类似于这样的解决方案对您有用:

https://stackoverflow.com/a/34392545/2019281

创建一组图层:

baseLayers = {
  "OpenStreetMap": lyrOSM,
  "OpenTopoMap": lyrOpenTopoMap,
  "Esri-WorldImagery": lyrWorldImagery
};
overlays = {
  "Mountains": Mountains,
  "River": River 
};
L.control.layers(baseLayers, overlays).addTo(myMap);