在不止一层中可见传单标记

Having Leaflet markers visible in more than one layer

我希望我的一些 Leaflet 标记在我的 Openstreetmap 地图上不止一层可见。

举个例子:伦敦是海港,也是首都。 所以我想在 select 只有层 'harbors' 或层 'capital cities'.

时看到伦敦标记

但是 Leaflet 标记和图层的正常行为似乎是伦敦仅在图层 'harbors' 和 'capital cities' 都被 selected 时才会显示。

如果仅 selected 两层中的一层,如何实现显示伦敦标记?

代码:

var harbor  = L.layerGroup().addTo(map);
var capital = L.layerGroup().addTo(map);
      
var marker1 = L.marker([51.5, 0]);
marker1.addTo(harbor);
marker1.addTo(capital);

var overlays = { "Capital": capital, "Harbor": harbor}; 
L.control.layers(null, overlays).addTo(map);

@Tordanik 提供的 link 很有帮助。 添加此代码即可完成工作:

map.on("overlayremove", function(o) {
        
  if (map.hasLayer(capital)) {
    map.removeLayer(capital);
    map.addLayer(capital);
  }
        
  if (map.hasLayer(harbor)) {
    map.removeLayer(harbor);
    map.addLayer(harbor);
  }
        
});

ovelayremove-click 后采取的步骤:

  1. 测试每一层是否激活
  2. 删除此图层
  3. 将此层与他的标记一起放回去 结果:该图层中的所有标记再次可见。